如何添加更严格的`findOne`版本,如果找不到所有模型的记录,它会返回错误?

时间:2016-02-26 08:27:21

标签: javascript node.js sails.js waterline

在SailsJS for API中,我们在执行其他逻辑之前获取资源并检查它是否存在。

对于所有模型,如何在一个地方实现一个函数说findOneStrict,它会调用具有某些特定一致错误的回调?无所谓,它必须始终是一样的。
这样的功能可以在API端点上节省大量的代码重复。

理想情况下,它应该支持populate个关联。

示例当前代码:

sendSurpriseGift: function(req, res) {
  async.auto({
    user: function(callback) {
      User.findOne(userId).populate('hobby').exec(function(err, user) {
        if (err)
          return callback(err);
        if (!user)
          return callback({status: 'NOT_FOUND'});

        return callback(null, user);
      }
    }),
    sendGift: ['user', function(callback, results) {
      var user = results.user;
      // Gift sending logic
      // more logic
    }],
  }, function(err, results) {
       if (err) {
         if (err.status === 'NOT_FOUND') 
           return res.notFound(err);
         return res.serverError(err);
       }
       return res.ok({status: 'OK'});
  });
}

0 个答案:

没有答案