为什么我不能在Waterline ORM模型/结果的实例上调用自定义方法?

时间:2017-04-13 09:54:26

标签: javascript sails.js waterline

除非它被定义为属性方法?

模型

module.exports = Object.assign({}, sails.config.model, {
  attributes: {
  ...

config / model.js中的通用模型方法

module.exports.model = {
  mySaveWithPromise: function(){
    return new Promise((resolve, reject) => {
      this.save({ populate: false }, function (error) {
        if (error) {
          reject(error);
        } else {
          resolve();
        }
      });
    });
  }
}

触发
User.findOne({email: "email@example.com"})
  .then(function(user) {
    user.firstname = 'newName';
    return user.mySaveWithPromise()
  });

导致......

TypeError: user.mySaveWithPromise is not a function

我可以将其添加到api/config/models.js中的attributes,这很好,但文档警告不要向attributes添加异步方法。就我而言,我猜测模型的通用输出之类的东西可能会导致保存。

奇怪的是,mySaveWithPromise确实存在作为对象的关键。我怀疑我只是把这个方法放在一个服务中并将实例传递给它,但我很想知道对象的基本区别。

0 个答案:

没有答案