我正在学习NodeJS,下面是我被困的查询:
user.route.js
module.exports = function(app){
console.log("route initialized");
var ctrl = require("../controllers/user.controller");
app.post("/api/createuser", ctrl.createUser);
};
控制器user.controller.js中的createUser函数
var User = require("../models/user");
controller.createUser = function(req,res){
var user = req.body;
console.log(user);
var userModel = new User(user);
userModel.save(function(err, data){
if(err){
res.send("error occurred please try again");
}else{
res.send(data);
}
});
};
现在,当我尝试通过邮递员点击网址http://localhost:3000/api/createuser时,我正在关注mongo错误
Mongoose: mpromise (mongoose's default promise library) is deprecated, plug in your own promise library instead: http://mongoosejs.com/docs/promises.html
现在我不知道如何更改我的代码以适应承诺。有人可以帮我吗?
非常感谢
答案 0 :(得分:1)
我个人更喜欢bluebird,但您可以选择Q之类的其他内容或es6中的其他内容。
mongoose.Promise = require('bluebird');
mpromise承诺库。如果可用,Mongoose 5.0将默认使用本机承诺,否则不承诺。您仍然可以使用mongoose.Promise = require('bluebird');
设置自定义承诺库,但不支持mpromise。 (来自https://github.com/Automattic/mongoose/wiki/5.0-Deprecation-Warnings)
答案 1 :(得分:1)
Mongoose的功能需要承诺,他们现在已经弃用了回调。 因此,这两个都会在服务器上发出此警告,
mongoose.createConnection('mongodb://localhost/db');
mongoose.createConnection('mongodb://localhost/db', function(err, res) {
});
要解决此问题,您可以使用第三方库,例如blurbird,也可以使用ES6本机承诺。我通常更喜欢后来的一个,这里是es6原生承诺的片段
mongoose.Promise = global.Promise;
mongoose.createConnection('mongodb://localhost/db');
我希望它有所帮助。