【问题标题】:Mongoose 4.1.3 save promise not workingMongoose 4.1.3 保存承诺不起作用
【发布时间】:2015-11-12 13:08:25
【问题描述】:

我似乎无法在猫鼬中工作。 我有一个选项模型:

let option = new OptionModel({
  value: 'test',
  vote: 0
});

我尝试保存:

option.save().then(function() {
  console.log('saved')
});

不工作,它只输出什么

option.save(function(){
  console.log('saved');
});

正在工作,输出“已保存”。 为什么?

【问题讨论】:

  • save 在 Promise API 中没有支持(除非他们从那以后修复了它)。使用 Promise.promsifyAll 和 bluebird,然后使用 saveAsync
  • @BenjaminGruenbaum 它在文档中说,该函数正在返回一个 Promise mongoosejs.com/docs/api.html#model_Model-save
  • 你没有在任何地方检查错误。
  • @httpete 如果您的承诺链中发生错误,则不会。
  • 我将.save() 与 Promises 一起使用,它在 Mongoose 4.1.3 中肯定对我有用。正如@robertklep 和@httpete 建议的那样,它可能会被拒绝。尝试option.save().then(function() { console.log('saved') }, console.error.bind(console)); 仔细检查您没有收到错误。

标签: node.js mongoose promise


【解决方案1】:

您可以通过添加以下包 https://www.npmjs.com/package/mongoose-promised 使您的架构能够在每次调用时使用 Promise

这提供了带有 promise 的函数,但用 saveQ() 替换了 save() 函数。

option.saveQ().then(function() {
   console.log('saved')
});

类似地 find() 被 findQ() 替换。

【讨论】:

    【解决方案2】:

    如果您的 Promise 回调不起作用,则可能与 mongoose.connection 有关。您可以使用

    检查一切是否正确
     mongoose.connection.on('error', err => console.log(err));
    

    【讨论】:

      猜你喜欢
      • 2017-04-29
      • 2014-09-14
      • 2016-06-07
      • 2016-06-16
      • 2016-05-07
      • 2015-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多