弃用警告:猫鼬:mpromise

时间:2017-02-15 17:51:41

标签: mongoose

我有这个问题

(node:10372) DeprecationWarning: Mongoose: mpromise (mongoose's default
 promise library) is deprecated, plug in your own promise library instead: 
 http://mongoosejs.com/docs/promises.html

我试过这个解决了

mongoose.Promise = global.Promise;
mongoose.Promise = require('bluebird');
mongoose.Promise = require('q').Promise;

没有人解决这个问题。

有了这个问题,我还有另外一个问题 - 没有工作减少。 data.likes -= 1;

Mongoose只是不救这个!更准确地说,猫鼬通过时间节省。我听说这个问题可能是被贬低的承诺所致。

Post.findById(req.body._id, function(err, data) {
    if (err) {console.log(err);}

    if (data.voited[req.session.id] == true) {
        data.voited[req.session.id] = false;
        data.likes += 1;
        var post = new Post(data);
        post.save(function(err, data) {
            if (err) {
                console.log(err);
                res.send({status:416});
            } else {
                res.send({status:200, likes: true});
            }
        });
    } else {
        data.voited[req.session.id] = true;
        data.likes -= 1;
        var post = new Post(data);
        post.save(function(err, data) {
            if (err) {
                console.log(err);
                res.send({status:416});
            } else {
                res.send({status:200, likes: false});
            }
        });
    }   
})

怎么办?删除猫鼬?我不想重写所有项目..

mongoose 4.8.2

1 个答案:

答案 0 :(得分:3)

您在连接之前设置了Promise吗?

const mongoose = require('mongoose');
mongoose.Promise = global.Promise;
mongoose.connect('mongodb://...');

另外,请务必在使用猫鼬时设置Promise,即使在Schema上也是如此。

如此issue中所述。

编辑:关于减量问题(如果你没有在其他任何地方使用promises,我认为这与之前的相关)。试试这个。

Post.findById(req.body._id, function(err,data) {
    if (err) {console.log(err);}

    var session = data.voited[req.session.id];

    if (session == true) {
       Post.update({_id: req.body._id}, {$inc: {likes: 1}, voited: {[req.session.id]: false}}, function(err, data) {
          if (err) { console.log(err); }
          res.send({ status:200, likes: true });
          });  
    } else {
        Post.update({_id: req.body._id}, {$inc: {likes: -1}, voited: {[req.session.id]: true}}, function(err, data) {
           if (err) { console.log(err); }
           res.send({ status:200, likes: false });
        });
    }   
 });