Node.js 在mongodb中保存记录
我不熟悉node.js和mongoDB。我一直在关注这本关于这个主题的书,这本书很成功。然而,当我尝试练习学习时。。。保存记录时失败 你能指导我的第一步学习吗 我确认node.js和mongoDB已安装并正在运行 我的代码页Node.js 在mongodb中保存记录,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我不熟悉node.js和mongoDB。我一直在关注这本关于这个主题的书,这本书很成功。然而,当我尝试练习学习时。。。保存记录时失败 你能指导我的第一步学习吗 我确认node.js和mongoDB已安装并正在运行 我的代码页 var mongo = require('mongoose'); const UserSchema = new mongo.Schema({ name: { type: String, trim: true, required:
var mongo = require('mongoose');
const UserSchema = new mongo.Schema({
name: {
type: String,
trim: true,
required: 'Name is required'
},
email: {
type: String,
trim: true,
unique: 'Email already exists',
match: [/.+\@shetty\.org\.uk/, 'Please fill a valid email address for your domain only'],
required: 'Email is required'
},
hashed_password: {
type: String,
required: "Password is required"
},
status: {
type: String,
enum: ['New','Active','Disabled','Banned'],
default: "New"
},
salt: String,
updated: Date,
created: {
type: Date,
default: Date.now
}
});
var User = mongo.model('User', UserSchema);
var user1 = new User({
name: 'Avinash',
email: 'avinash@shetty.org.uk'
});
var user1 = new User({
name: 'Avinash',
email: 'avinash@shetty.org.uk'
});
mongo.promise = global.promise;
mongo.connect('mongodb://localhost/mongotest',{useNewUrlParser: true});
console.log(user1);
user1.save((err, result) => {
if (err) {
console.log('Error while saving');
}else{
console.log("Successfully saved record!");
}
});
mongo.disconnect();
console.log将输出此
$ node index.js
{ status: 'New',
_id: 5bb8ca9a348028b4d4663544,
name: 'Avinash',
email: 'avinash@shetty.org.uk',
created: 2018-10-06T14:45:46.348Z }
Error while saving
(node:46292) DeprecationWarning: collection.ensureIndex is deprecated. Use createIndexes instead.
请做向导…:(save()方法是异步的,这意味着您的代码将在异步指令完成之前继续运行下一条指令
在执行save调用之后,mongo.disconnect()
将在save()
完成之前终止实例
解决方案:
在save()
操作完成并执行回调之前,不要调用mongo.disconnect()
其他错误:
我还注意到,您已根据需要声明了用户架构的
hashd_password
属性,但在创建user
实例时未提供密码。这将导致验证失败。一个好的开始方法是记录您收到的错误,这样会更容易提供帮助。我得到的是e错误{MongoError:server实例池在server.insert的basicWriteValidations(C:\development\mongo\node\u modules\mongodb core\lib\topologies\server.js:700:41)(C:\development\mongo\node\u modules\mongodb core\lib\topologies\server.js:805:16)中被销毁(C:\development\mongo\node\u modules\mongodb\lib\topologies\topology\u base.js:321:25)好的,我在下面给出了一个答案,解释了出现错误的原因。要补充这个答案,你不应该调用mongo.disconnect()
除非发生严重错误,否则不要担心。Mongo能够处理自己的连接,只要它按预期工作,就让它完全这样做。非常感谢。我忘记了javascript是异步的这一关键事实:)