在mongodb中保存记录

时间:2018-10-06 14:58:26

标签: 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: '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.

请执行指南... :(

1 个答案:

答案 0 :(得分:1)

save()方法是异步的,这意味着您的代码将在异步指令完成之前继续运行下一条指令。

在保存调用之后,您正在执行mongo.disconnect(),它将在save()完成之前终止您的实例。

解决方案:

mongo.disconnect()操作完成并且您的回调已执行之后,才调用save()

其他错误:

我还注意到,您已根据需要声明了用户架构的hashed_password属性,而在创建user的实例时未提供密码。这将导致验证失败。