Service sails.js使用find查询时,服务返回的对象未定义
我创建了一个名为AppService的服务。 其函数GetUserPositionOptions应该返回一个对象:Service sails.js使用find查询时,服务返回的对象未定义,service,find,sails.js,Service,Find,Sails.js,我创建了一个名为AppService的服务。 其函数GetUserPositionOptions应该返回一个对象: getUserPostionOptions: function (user) { // PositionOptions.findOne({id:'53f218deed17760200778cfe'}).exec(function (err, positionOptions) { var positionDirectionsOptions = [1,2,3];
getUserPostionOptions: function (user) {
// PositionOptions.findOne({id:'53f218deed17760200778cfe'}).exec(function (err, positionOptions) {
var positionDirectionsOptions = [1,2,3];
var positionLengthsOptions = [4,5,6];
var object = {
directions:positionDirectionsOptions,
lengths:positionLengthsOptions
};
return object;
// });
}
这是可行的,在我的控制器位置,正确填充选项:
var positionOptions = AppService.getUserPostionOptions(user);
但是,当我取消对find查询的注释时,该项被找到,但该对象返回undefined
提前感谢您的帮助SailsJs ORM(以及几乎所有的NodeJs数据库查询方法)通过回调函数使用非阻塞机制。因此,您必须将代码更改为:
getUserPostionOptions: function (user, callback) {
PositionOptions.findOne({id:'53f218deed17760200778cfe'}).exec(function (err, positionOptions) {
var positionDirectionsOptions = [1,2,3];
var positionLengthsOptions = [4,5,6];
var object = {
directions:positionDirectionsOptions,
lengths:positionLengthsOptions
};
callback(null, object); // null indicates that your method has no error
});
}
那就用它吧:
AppService.getUserPostionOptions(user, function(err, options) {
if (!err) {
sails.log.info("Here is your received data:");
sails.log.info(options);
}
});
谢谢你的帮助,只是结尾少了一个小括号。