sails.js使用查询查询时,未定义来自服务的返回对象

tom*_*sso 3 service find sails.js

我创建了一个名为AppService的服务.它的函数getUserPostionOptions应该返回一个对象:

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;
  // });
}
Run Code Online (Sandbox Code Playgroud)

这工作,在我的控制器positionOptions正确填充:

var positionOptions = AppService.getUserPostionOptions(user);
Run Code Online (Sandbox Code Playgroud)

但是,当我取消注释查找查询时,找到该项,但该对象返回undefined.

提前感谢您的帮助

hao*_*ang 5

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
  });
}
Run Code Online (Sandbox Code Playgroud)

然后使用它:

AppService.getUserPostionOptions(user, function(err, options) {
  if (!err) {
    sails.log.info("Here is your received data:");
    sails.log.info(options);
  }
});
Run Code Online (Sandbox Code Playgroud)