【问题标题】:Mongoose Promise error猫鼬承诺错误
【发布时间】:2017-06-15 16:09:05
【问题描述】:

这是添加原生promise后保存时仍然抛出的错误。

(node:5604) DeprecationWarning: Mongoose: mpromise(mongoose 的默认承诺库)已弃用,请插入您自己的承诺库:http://mongoosejs.com/docs/promises.html

mongoose.Promise = global.Promise;
mongoose.connect('mongodb://127.0.0.1/optimusCP')
    .then(function () {
        console.log('Connected to MONGOD !!');
    }).catch(function (err) {
        console.log('Failed to establish connection with MONGOD !!');
        console.log(err.message);
    });

我已尝试过 bluebird 和 q,但仍未找到解决此问题的方法。 以下是我保存时的代码,出现以下弃用警告..

var user = new User();
        user.email = req.body.email;
        user.password = hash;
        user.save()
            .then(function (user) {
                console.log(user);
            })
            .catch(function (err) {
                console.log(err);
            });

这个错误发生在 4.8.1 的新版本 mongoose 上,但在 4.7.6 mongoose 版本上工作正常。

【问题讨论】:

  • 你读过上一节关于MongoDB 驱动程序的承诺
  • 来自文档?如果是的话..
  • 只是你没有展示那部分代码
  • 我已经更新了我的代码

标签: node.js mongodb mongoose promise mongoose-schema


【解决方案1】:

将 Mongoose 从 4.8.1 升级到 4.9.1 解决了我的问题。

【讨论】:

    【解决方案2】:

    尽管在mongoose.connect(...) 之前使用了mongoose.Promise = global.Promise;,但我收到了同样的警告。

    我发现,我在一个文件中初始化了 mongoose 连接:

    import mongoose from 'mongoose';
    
    ...
    
    // Connect to MongoDB
    mongoose.Promise = global.Promise;
    mongoose.connect(mongoUri, mongoOptions);
    mongoose.connection.on('error', (err) => {
      console.error(`MongoDB connection error: ${err}`);
      process.exit(1);
    });
    

    但我也在另一个文件中导入了mongoose(其中描述了猫鼬方案),所以我也在第二个文件中添加了mongoose.Promise = global.Promise;,结果警告消失了。

    import mongoose, { Schema } from 'mongoose';
    mongoose.Promise = global.Promise;
    
    const UserSchema = new Schema({ ... });
    

    可能你也有同样的情况。

    【讨论】:

    • 兄弟你救了我的命(开个玩笑)正确答案兄弟(y)
    • 我有同样的问题,但确实喜欢你的 sn-p 但不工作。你能有其他解决方案吗?
    【解决方案3】:

    我已经使用 bluebird 将 promise 与猫鼬模型函数节点 v6.9.4 一起使用:

    mongoose.Promise = require('bluebird');
    

    【讨论】:

    • 我已经明确提到我尝试过同时使用bluebird和q,但仍然是同样的问题。
    【解决方案4】:

    我已经成功摆脱了这个消息

    mongoose.Promise = Promise;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-12
      • 1970-01-01
      • 2012-12-14
      • 2019-06-04
      • 2017-08-18
      • 2018-02-15
      • 2019-09-19
      相关资源
      最近更新 更多