Mongoose 弃用警告:猫鼬:mpromise

Mongoose 弃用警告:猫鼬:mpromise,mongoose,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.Pr

我有这个问题

(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

猫鼬救不了这个!更准确地说,猫鼬通过时间来节省。我听说这个问题可能会被不赞成的承诺所困扰

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

您是否在连接之前设置了
承诺

const mongoose = require('mongoose');
mongoose.Promise = global.Promise;
mongoose.connect('mongodb://...');
此外,请确保在使用mongoose时设置了
承诺
,即使是在
模式

如本文所述

编辑:关于减量问题(如果您没有在其他地方使用承诺,我相信这与前面的问题有关)。试试这个

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

是的,以前。问题解决了。我设置
mongoose.Promise=global.Promise在架构中,但减量仍然不起作用。你知道吗?刚刚编辑了我的初步答案。除非您在代码的其他地方使用承诺,否则我认为这些问题实际上是相关的。如果删除
新帖子(数据)
解决了您的问题,您还可以安全地删除先前添加的
mongoose.Promise
声明。也就是说,如果你要使用承诺,那么遵守承诺也没有坏处。只是注意到在屏幕上有一条关于保存总是返回承诺的注释(即使提供了回调)。因此,您实际上应该保留
mongoose.Promise
声明
不保存,但
post.likes+=1保存。可能是因为一个对象的类型不同
if(){}
检查
post.voited[req.session.id]==true
并且它也需要保存。现在我将尝试这样做。