2016-08-30 61 views
6

ancak ben bu hata msg alıyorum, bir ORTALAMA yığın sunucusunu başlatmak çalışıyorum:Gelincik varsayılan vaadi kütüphane yığını ORTALAMA önerilmiyor

Gelincik: mpromise (firavunfaresi varsayılan söz kütüphanesi) kullanımdan kaldırıldı yerine kendi vaadi kütüphanede fiş: burada bazı cevaplar aramak çalıştı http://mongoosejs.com/docs/promises.html

ama buldum kimse benim için yeterince açık değildi:

(node:3341) DeprecationWarning: Mongoose: mpromise Ben mongoose.connect çağıran dosyası bulduk, ama bu konuda kodlar nasıl çalıştığını herkes benim için açıklayabilirim, benim için işe yaramadı?

+0

Ne denedin mi ve bu konuda tam olarak ne işe yaramadı? – JohnnyHK

+0

Sadece mongodb öğretici ve ORTALAMA yığın öğretici izledi, ancak sunucu değil Sarts yaptı. // localhost'a erişmeye çalıştığımda: 3000/bu hatalar terminalimde görünür ve sunucu asla başlamaz. –

+0

Bu ileti sadece bir uyarı, bir hata değildir. Yani sorun muhtemelen başka bir yer. – JohnnyHK

cevap

10

Mongo bağlanmadan önce kullanılması bu kodu ve bu vaadi sorunu çözecektir. Genellikle MongoDB bağlanmak

mongoose.Promise = global.Promise; 
2

yolu Bluebird vaadi kütüphane kullanmaktır. Bu konuda daha fazla bilgi edinebilirsiniz this post. Herhangi bir şansla, aşağıdaki kod parçacığı, prototipleme yaparken kullandığım gibi başlamanıza yardımcı olacaktır.

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

, neye ve nasıl başaracağınıza biraz karar vermekte kötü bir fikir değildi. –

2

En son mongoose kütüphanesi, herhangi bir varsayılan söz kütüphanesi kullanmayın. Mongoose v 4.1.0'dan kendi kütüphanenizi de ekleyebilirsiniz. Eğer firavunfaresi kitaplığı (MongoDB sürücüsü altında yatan değil) kullanıyorsanız

o zaman böyle söz kütüphanesinde takabilirsiniz:

//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();

sonra MongoDB Sürücü kullanıyorsanız biraz fazladan çaba göstermeniz gerekecek. Çünkü, mongoose.Promise mongoose'un sürücüyü kullanmadığı Sözünü ayarlar. Bu durumda aşağıdaki kodu kullanabilirsiniz.

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

+0

Teşekkürler Tolsee, bu soruyu bir süre önce yaptım, çünkü onlardan beri, Mongo ile çalışmak zorunda değildim, önümüzdeki hafta Mongo hakkında yeni bir derse başlayacağım, bu yüzden bir daha sorun çıkarsam, kontrol edeceğim. Cevap. –

1

Benim için çalış.

Gelincik v4.11.7 çözmek vaat sorun

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

Gelincik #save()

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 
     }); 
    } 
});