1.-我正在使用loopback-connector-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);
})
})
}).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')上返回,但它们不会在浏览器中返回...
我不知道发生了什么事,有人可以帮助我吗?
泰
答案 0 :(得分: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"];
这是一回事。另一件事是,如果你想要随机结果(正如人们可能会想到的那样),你需要提供样本函数,否则你只需要以常规(降序?)顺序返回所有数据,如果是请求它是你可能有问题。