2016-08-30 4 views
6

Я пытаюсь запустить сервер MEAN-стеку, однако я получаю эту Сообща ошибку:библиотека обещания по умолчанию Mongoose является устаревшей в УСРЕДНЕННОМ стек

Mongoose: mpromise (обещание по умолчанию библиотека Mongoose в) является устаревшим , подключите собственное обещание библиотеки вместо: http://mongoosejs.com/docs/promises.html

Я попытался найти ответы на некоторые вопросы здесь, но тот, который я нашел, не было достаточно ясно для меня:

(node:3341) DeprecationWarning: Mongoose: mpromise

Я нашел файл, вызывающий mongoose.connect, но коды по этому вопросу не помогли мне, может ли кто-нибудь объяснить мне, как это работает?

+0

Что вы попробуете и что именно не работает по этому поводу? – JohnnyHK

+0

Я просто следовал учебнику Mongodb и учебнику по MEAN-стеку, но сервер не саркатился. Когда я пытаюсь получить доступ к // localhost: 3000/эти ошибки отображаются в моем терминале, и сервер никогда не запускается. –

+0

Это сообщение не является ошибкой, это всего лишь предупреждение. Так что проблема, скорее всего, где-то еще. – JohnnyHK

ответ

10

используйте этот код, перед подключением монго, и это решит проблему обещания.

mongoose.Promise = global.Promise; 
2

Как я обычно подключаюсь к MongoDB является использованием библиотеки Bluebird обещания. Вы можете узнать больше об этом в this post. В любом случае этот фрагмент ниже поможет вам начать работу, так как это то, что я использую при прототипировании.

let mongoose = require('mongoose'); 
let promise = require('bluebird'); 
let uri = 'mongodb://localhost:27017/your_db'; 
mongoose.Promise = promise; 
let connection = mongoose.createConnection(uri); 
+0

было неплохой идеей немного разобраться, что и как вы собираетесь достичь. –

2

Последняя библиотека mongoose, не используйте библиотеку обещаний по умолчанию. А из Mongoose v 4.1.0 вы можете подключить свою собственную библиотеку.

Если вы используете мангуст библиотеки (не лежащие в основе драйвера MongoDB), то вы можете подключить библиотеки обещают так:

//using Native Promise (Available in ES6) 
 
mongoose.Promise = global.Promise; 
 

 
//Or any other promise library 
 
mongoose.Promise = require('bluebird'); 
 

 
//Now create query Promise 
 
var query = someModel.find(queryObject); 
 
var promise = query.exec();

Если вы используете MongoDB Driver затем вам нужно будет приложить дополнительные усилия. Потому что mongoose.Promise устанавливает Обещание, что мангуста использует не драйвер. Вы можете использовать приведенный ниже код в этом случае.

// Use bluebird 
 
var options = { promiseLibrary: require('bluebird') }; 
 
var db = mongoose.createConnection(uri, options);

+0

Спасибо Tolsee, я задал этот вопрос некоторое время назад, так как им не приходилось работать с монго, я на следующей неделе начну новый класс по Mongo, поэтому, если у меня снова возникнут проблемы, я проверю ваш ответ. –

1

Работа для меня.

Mongoose v4.11.7 решить проблему обещают

const mongoose = require('mongoose'); 
mongoose.Promise = global.Promise; 
mongoose.connection.openUri('mongodb://127.0.0.1:27017/app_db', { /* options */ }); 

Mongoose Сохранять()

var article = new Article(Obj); 
article.save().then(function(result) { 
    return res.status(201).json({ 
     message: 'Saved message', 
     obj: result 
    }); 
}, function (err) { 
    if (err) { 
     return res.status(500).json({ 
      title: 'Ac error occurred', 
      error: err 
     }); 
    } 
}); 
Смежные вопросы