【问题标题】:I am trying to setup my mongoDB database using mongoose, but i getting an error "mongoose default promise library is deprecated"我正在尝试使用 mongoose 设置我的 mongoDB 数据库,但出现错误“不推荐使用 mongoose 默认承诺库”
【发布时间】:2019-06-13 09:49:05
【问题描述】:

我正在尝试使用 mongoose 设置我的 MongoDB 数据库,但收到已弃用的警告“Mongoose:mpromise(mongoose 的默认承诺库)已弃用,请插入您自己的承诺库:http://mongoosejs.com/docs/promises.html

下面是我的 server.js 文件代码:

var mongoose = require('mongoose');
mongoose.promise = require('bluebird');


// mongoose.promise = global.promise;
mongoose.connect('mongodb://localhost:27017/TodoApp');

var Todo = mongoose.model('Todo', {
  text: {
    type: String
  },
  completed: {
    type: Boolean
  },
  completedAt: {
    type: Number
  }
});

var newTodo = new Todo({
  text: 'Cook dinner'
});

newTodo.save().then((doc) => {
  console.log('Saved todo', doc);
}, (e) => {
  console.log('Unable to save todo')
});

我已经尝试安装 bluebird 并将其用作我的第三方承诺,但仍然收到相同的错误消息。

【问题讨论】:

标签: javascript node.js mongodb mongoose es6-promise


【解决方案1】:

尝试使用这个代码伙伴

var mongoose = require('mongoose');

mongoose.Promise = global.Promise;
mongoose.connect('mongodb://10.7.0.3:27107/data/TodoApp'); 

【讨论】:

    【解决方案2】:

    你应该使用

    mongoose.Promise = require('bluebird');
    

    你正在使用

    mongoose.promise = require('bluebird');
    

    另外,我认为您使用的是旧版本的 nodejs。我使用 node js 8 & mongoose 默认使用 global.Promise,因为 nodejs 8 带有原生 Promise。

    【讨论】:

    • 我可以使用 ES-6 版本的 Promise 代替 bluebird,但无法将其保存到我的 MongoDB 数据库中。我正在打印第二个 console.log 消息。
    • @AbhinavAnshul 错误信息是什么。打印错误消息并粘贴到此处。
    • 它成功了,我在 MongoDB 应用程序中损坏的文件很少,而且我使用过时的 Nodejs。非常感谢您的帮助。
    猜你喜欢
    • 2017-07-28
    • 2017-05-12
    • 2017-07-11
    • 1970-01-01
    • 2017-07-05
    • 2017-09-01
    • 1970-01-01
    • 2014-08-24
    • 1970-01-01
    相关资源
    最近更新 更多