如何在模型的属性方法中正确使用水线承诺?

时间:2015-06-11 15:51:08

标签: node.js sails.js waterline bluebird

Model我使用的属性方法将查找数据库,不得不查询其他不同的模型。

所以我使用水线承诺,但我不确定如何实际执行模型的属性方法本身的返回方法,这就是我正在做的事情:

我们称之为LineUp模型:

module.exports = {
  connection: 'seasonDB',
  attributes: {

    reachesMaxFavoriteTeam: function (team) {

      UserTeam.findOne().
        where({id: this.userTeam}).
        then(function (team) {
          User.findOne().
            where({id: team.userId}).
            then(function (user) {
              return [team, user.fanOf];     // I assume to be returning  for the spread function
            }).
            spread(function (team, user) {
               // How can I make reachesMaxFavoriteTeam return something here???
            }).catch(function (err) {

            });
        });
    }
};

所以我不知道如何 我应该为reachesMaxFavoriteTeam本身的LineUp属性方法执行返回。

1 个答案:

答案 0 :(得分:1)

您返回整个承诺链:

reachesMaxFavoriteTeam: function (team) {
  return UserTeam.findOne().
    where({id: this.userTeam}).
    then(function (team) {
      User.findOne().
        where({id: team.userId}).
        then(function (user) {
          return [team, user.fanOf];
        }).
        spread(function (team, user) {
          return THE_RESULT;
        }).catch(function (err) {

        });
    });
}

您的主叫代码:

lineUpInstance.reachesMaxFavoriteTeam(team).then(function(result) {
  // result === THE_RESULT here
});