2016-07-06 6 views
-1

1.- Я работаю с петлевой-соединитель rethinkdbdashВозврат rethinkdbdash запрос на петлевой удаленного метода

2.- На удаленном методе мне нужно получить некоторые случайные записи из моей БД, это код, так далеко.

(function(){ 
 
    'use strict'; 
 
    module.exports = (Heatmap) => { 
 
     var r = require('rethinkdb'); 
 
     // Connect to RethinkDB 
 
     var p = r.connect({ 
 
      host: 'rethink', 
 
      port: 28015, 
 
      db: 'livedata' 
 
     }); 
 

 

 
     // Error Handler 
 
     function throwErr(err) { 
 
      throw (err); 
 
     } 
 
     
 
     // Random Remote Method 
 
     Heatmap.random = (cb) => { 
 
      p.then(function(conn) { 
 
       r.table('heatmap').run(conn, function(err, cursor) { 
 
         cursor.toArray(function(err, results) { 
 
          console.log('ALO-4', results) 
 
          cb(err, results); 
 
         }) 
 
       }) 
 
     \t  }).error(throwErr);    
 
     }; // Heatmap.random 
 

 
     Heatmap.remoteMethod(
 
      'random', 
 
      { 
 
       accepts : [], 
 
       returns : { arg : 'results', type : 'array', root : true }, 
 
       http : { path : '/random', verb : 'get' } 
 
      } 
 
     ); // Heatmap.remoteMethod 
 
    }; 
 
}).call(this);

3.- Я уже выполнил эту документацию: https://github.com/neumino/rethinkdbdash https://docs.strongloop.com/display/public/LB/Remote+methods#Remotemethods-Argumentdescriptions

4.- Дело в том, что записи или результаты вернуться на console.log (» ALO-4 '), но они не возвращаются в браузере ...

Я не знаю, что происходит, может кто-нибудь мне помочь?

Ty

ответ

0

Ваш код откусил, там вы идете:

(function() { 
 
'use strict'; 
 
module.exports = function (Heatmap) { 
 
    var r = require('rethinkdb'); 
 
    // Connect to RethinkDB 
 
    var p = r.connect({ 
 
     host: 'rethink', 
 
     port: 28015, 
 
     db: 'livedata' 
 
    }); 
 
    // Error Handler 
 
    function throwErr(err) { 
 
     throw (err); 
 
    } 
 
    // Random Remote Method 
 
    Heatmap.random = function (cb) { 
 
     var results = null; 
 
     p.then(function (conn) { 
 
      r.table('heatmap').sample(100).run(conn, function (err, cursor) { 
 
       cursor.toArray(function (err, arr) { 
 
        results = arr; 
 
        cb(err, results); 
 
       }); 
 
      }); 
 
     }).error(throwErr); 
 
    }; // Heatmap.random 
 
    Heatmap.remoteMethod('random', { 
 
     returns: { arg: 'results', type: 'array', root: true }, 
 
     http: { path: '/random', verb: 'get' } 
 
    }); // Heatmap.remoteMethod 
 
}; 
 
}).call(this);

Ошибка вы упоминаете происходит потому, что данные, которые вы вернуть необходимо иметь такое же имя как «arg», который вы определяете ниже. В вашем коде «результаты» это просто необработанные данные, которые не имеют имени. Loopback ищет что-то вроде:

results = ["foo, bar, baz"]; 

Это одно. Другое дело, что если вам нужны случайные результаты (как можно подумать по имени метода), вам нужно предоставить функцию выборки, иначе вы возвращаете все свои данные в обычном порядке (по убыванию?), И если запрос достаточно большой, у вас могут быть проблемы.

 Смежные вопросы

  • Нет связанных вопросов^_^