2017-01-30 110 views
4

這是即使在添加本地承諾後保存時仍然出現的錯誤。貓鼬承諾錯誤

(節點:5604)DeprecationWarning:貓鼬:mpromise(貓鼬的默認承諾庫)已被棄用,插上自己的諾言庫,而不是: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); 
    }); 

我曾經嘗試都藍鳥& 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新版本,但在4.7.6工作正常貓鼬版本。

+0

你讀過關於**承諾MongoDB驅動**的最後一節** –

+0

來自文檔?如果是這樣的話...... –

+0

它只是你沒有顯示你的代碼的一部分 –

回答

2

儘管使用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); 
}); 

但我在另一文件中導入mongoose太(其中貓鼬方案進行了說明),所以我在第二個文件中加入mongoose.Promise = global.Promise;太,作爲一個結果,警告消失了。

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

const UserSchema = new Schema({ ... }); 

可能你有同樣的情況。

+0

兄弟你救了我的命(開玩笑)正確答案bro(y) –

0

我已經成功擺脫該消息與此

mongoose.Promise = Promise; 
0

我已經使用的藍鳥使用與貓鼬模型功能節點v6.9.4承諾:

mongoose.Promise = require('bluebird'); 
+0

我已經明確提到我已經嘗試使用藍鳥和q,但仍然是同樣的問題。 –

0

我有與Mongoose 4.8.1相同的問題,更新到4.9.1解決了我的問題。