Return 在环回远程方法上查询 rethinkdbdash
Return query rethinkdbdash on loopback remote method
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') 上的记录或结果 return 但浏览器中没有 return.. .
我不知道发生了什么事,有人可以帮助我吗?
太
你的代码有点不对劲,好了:
(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);
出现您提到的错误是因为您return 的数据必须 与您在下面定义的"arg" 同名。在您的代码中,"results" 它只是没有名称的原始数据。 Loopback 正在寻找类似的东西:
results = ["foo, bar, baz"];
这是一回事。另一件事是,如果你想要随机结果(正如人们可能通过方法的名称所想的那样),你需要提供样本函数,否则你只是 return 按常规(降序?)顺序排列所有数据如果请求足够大,您可能会遇到问题。
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') 上的记录或结果 return 但浏览器中没有 return.. .
我不知道发生了什么事,有人可以帮助我吗?
太
你的代码有点不对劲,好了:
(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);
出现您提到的错误是因为您return 的数据必须 与您在下面定义的"arg" 同名。在您的代码中,"results" 它只是没有名称的原始数据。 Loopback 正在寻找类似的东西:
results = ["foo, bar, baz"];
这是一回事。另一件事是,如果你想要随机结果(正如人们可能通过方法的名称所想的那样),你需要提供样本函数,否则你只是 return 按常规(降序?)顺序排列所有数据如果请求足够大,您可能会遇到问题。