【发布时间】:2018-03-31 02:29:46
【问题描述】:
我从一到两周开始学习 node.js & mongoDB & mongoose。我现在遇到的问题是,我正在尝试通过 mongoose .save() 保存到 db,但它没有按预期工作。我正在看一个教程,它已经 3 天了,所以应该是最新的,但是我收到了奇怪的错误。
mpromise(mongoose 的默认承诺库)已弃用”测试时出现错误 [重复]
我在stackoverflow上读到了,我可以添加:
猫鼬.Promise = require('bluebird');
它会工作,但代码甚至不会转到 .save 函数,也不会引发错误。我不确定问题出在哪里。
const mongoose = require('mongoose');
mongoose.Promise = global.Promise;
let connectionString = 'mongodb://localhost:27017/mongo2';
mongoose.createConnection(connectionString, (err) => {
if (err) {
console.log(err);
return;
}
let Student = mongoose.model('Student', {
firstName: {type: String, required: true},
lastName: {type: String, required: true},
age: {type: Number},
facultyNumber: {type: String, unique: true}
});
let me = new Student({
firstName: 'Who',
lastName: 'amI',
age: 20,
facultyNumber: '9374823104'
});
me.save().then((info) => {
console.log(info);
}).catch((error) => {
console.log(error);
});
});
编辑: 结果是:创建了数据库,也创建了集合,但没有创建对象。一切都是空的。
【问题讨论】:
-
您实际上没有连接。 createConnection 实际上并没有建立连接。相反,您应该真正使用
mongoose.connect(connectionstring,{ useMongoClient: true }),then( () => { /* code that does stuff */ })或更好的是使用async/await和await mongoose.connect(connectionstring, { useMongoClient: true });。同样在现代世界中mongoose.Promise = global.Promise通常会这样做,除非您特别“想要”蓝鸟。你需要插入 Promise,所以你真的应该学习如何使用它们。 -
如果我创建收藏,我怎么没有连接? @NeilLunn
-
因为
createConnection只是“创造”。它不打开。你从哪里读到你的指示?所有官方消息都会告诉你正确的做法。 -
本地学院视频剪辑。 "mongoose.connect(connectionString, { useMongoClient: true }).then(() => {" 解决了。我想我付给他们太多了......
-
呃!抱歉,但不是第一次有人指出付费订阅培训非常低劣。始终阅读官方文档。 connections 有很多细节。您可能还会在此处的 mongoose 标签中找到一些通常浏览答案的内容。另请注意,该架构定义中的任何一个都不应真正位于连接“内部”,并且在连接之前定义完全可以(以及您应该)。只有实际交互(
.save()、.find()等)才真正需要建立连接。
标签: javascript node.js mongodb mongoose