Sailsjs find()回调动作

时间:2014-10-19 11:56:01

标签: node.js sails.js

我的回调有问题,我不知道怎么回来。

index: function(req, res,next) {
    User.find().exec(function(err,users) {
        if(err) {
         //do something
        }
        res.locals.users = users
        return true;
    });

   Country.find().exec(function(err,countrys) {
    //save country
   }

  console.log(res.locals.users)
  res.view({
     users: res.locals.users,
     country: countrys
     user:res.locals.user
  });
}

如何才能访问这两个对象?

谢谢

2 个答案:

答案 0 :(得分:2)

您的数据库调用正在运行async,这意味着在将数据传递给它们之前呈现视图。所以你必须以同步的方式制作它们。这可以通过回调获得,或者你可以链接你的函数而不是回调,比如这个,

index: function(req, res,next) {
   User.find().exec(function(err,users) {
    if(err) {
     //do something
    }
    else{
      res.locals.users = users
      Country.find().exec(function(err,countrys) {
       if(err) {
           //do something
       }
       else{
           console.log(res.locals.users)
           res.view({
             users: res.locals.users,
             country: countrys
             user:res.locals.user
           });
       }
      }
    }
  });
}

其他方式是使用回调。

答案 1 :(得分:2)

如果您在继续添加更多查询时尝试使其美观且有条理,则可以使用sails附带的异步库

以此答案为例

Chaining waterline calls with Promises