猫鼬承诺错误

Har*_*ash 5 mongoose mongodb node.js promise mongoose-schema

这是在添加本机承诺后保存时仍会抛出的错误.

(节点:5604)弃用警告:不推荐使用Mongoose:mpromise(mongoose的默认承诺库),而是插入自己的promise库: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);
    });
Run Code Online (Sandbox Code Playgroud)

我试过蓝鸟和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);
            });
Run Code Online (Sandbox Code Playgroud)

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

Ant*_*vik 4

尽管mongoose.Promise = global.Promise;之前使用过mongoose.connect(...),我还是有同样的警告。

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

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);
});
Run Code Online (Sandbox Code Playgroud)

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

import mongoose, { Schema } from 'mongoose';
mongoose.Promise = global.Promise;

const UserSchema = new Schema({ ... });
Run Code Online (Sandbox Code Playgroud)

也许你也有同样的情况。