Node.js mongoose保存(来自其网站的示例无效)
我有文件要通过mongoose向mongo添加数据:Node.js mongoose保存(来自其网站的示例无效),node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我有文件要通过mongoose向mongo添加数据: var mongoose = require('mongoose'); var mongoDB = 'mongodb://myuser:mypass@ds145293.mlab.com:45293/employees'; mongoose.connect(mongoDB); mongoose.Promise = global.Promise; var db = mongoose.connection; db.on('error', conso
var mongoose = require('mongoose');
var mongoDB = 'mongodb://myuser:mypass@ds145293.mlab.com:45293/employees';
mongoose.connect(mongoDB);
mongoose.Promise = global.Promise;
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'MongoDB connection error:'))
db.once('open',function(){
console.log('connected')
var kittySchema = mongoose.Schema({
name: String
});
var Kitten = mongoose.model('Kitten', kittySchema);
var fluffy = new Kitten({ name: 'fluffy' });
fluffy.save(function (err, fluffy) {
if (err) return console.error(err);
console.log('saved');
});
})
mongoose.connection.close()
从mongoose站点复制了几乎一字不差的内容。我可以连接到数据库,但没有第二个控制台日志。我有一个数据库,但没有集合。这是问题吗?在关闭数据库之前,它无法完成保存。有许多选项可以等待保存。我喜欢异步/等待 编辑:对不起,那太快了。更新的示例
var mongoose = require('mongoose');
var mongoDB = 'mongodb://localhost/something';
async function run() {
await mongoose.connect(mongoDB);
console.log('connected')
var kittySchema = new mongoose.Schema({ name: String });
var Kitten = mongoose.model('Kitten', kittySchema);
var fluffy = new Kitten({ name: 'fluffy' });
await fluffy.save();
console.log('saved');
mongoose.connection.close();
}
run();
或者,您可以在保存后移动“接近”:
var mongoose = require('mongoose');
var mongoDB = 'mongodb://localhost/something';
mongoose.connect(mongoDB);
mongoose.Promise = global.Promise;
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'MongoDB connection error:'))
db.once('open', function () {
console.log('connected')
var kittySchema = new mongoose.Schema({name: String });
var Kitten = mongoose.model('Kitten', kittySchema);
var fluffy = new Kitten({ name: 'fluffy' });
fluffy.save(function (err, fluffy) {
if (err) return console.error(err);
console.log('saved');
mongoose.connection.close();
});
})
将
mongoose.Schema
替换为new Schema
,我也不认为这mongoose.Promise=global.Promise
是必需的。否,如果没有收集,则在保存时将创建一个。好的。知道有什么问题吗?在关闭数据库之前无法完成保存啊,是的,回调函数!现在可以工作了,我只需在回调中移动紧密连接。谢谢!啊哈,这就是我收到IDE警告的原因。不过,它确实没有新功能。它有一个if(!(模式的这个实例)){返回新模式(obj,options);}
。这已经不是第一次有人试图在没有新的东西的情况下运行它了:而且承诺的东西来自旧的文档,我敢肯定:@ippi你知道得更清楚,先生。我也是在我的MongoDB和mongoose的第一步。请引导。但我认为不需要承诺,所以我说了,是的,可以做到,我只是检查了一下,但现在没有建议。对不起,我不清楚!我的意思是OP一定是从那里得到的,它可能取决于node/mongoose版本。但你是对的!