简体   繁体   English

使用节点将文档保存在mongo中

[英]saving document in mongo using node

Create and Save a Record of a Model 创建并保存模型记录

My code: 我的代码:

var mongoose= require('mongoose');
mongoose.connect("****");

var db = mongoose.connection;
db.on(‘error’, console.error.bind(console, 'connection error:'));

var personSchema = new mongoose.Schema({
    name : String,
    age : Number,
    favoriteFoods :[String]
});

var Person = mongoose.model(‘Person’, personSchema);

var createAndSavePerson = function(done) {
 var mr = new Person({
    name: 'Mrdude',
    age: 22,
    favoriteFoods: ['Ice Creame', 'Grills']})

  mr.save(function(err, mr) {
    if(err) return console.error(err);
  });
  done(null, mr);
};

i am not able to find this error 我找不到此错误

i am getting “Cannot read property 'name' of null” error 我收到“无法读取null的属性'名称'”错误

please point where i am wrong 请指出我错了

You need to add these lines : 您需要添加以下行:

personSchema.pre('save', function (next) {
  // get the current date
   var currentDate = new Date();

  // change the updated_at field to current date
   this.updatedAt = currentDate;

  // if created_at doesn't exist, add to that field
  if (!this.createdAt) {
    this.createdAt = currentDate;
  }

  next();
});

  const newPerson = new Person();

  let name ='x'
  let family = 'y'
  .
  .
  .
  Object.assign(newPerson, req.body, {
   name: name,

  });

 newPerson.save((err, log) => {
    if (err) return next(err)
  });
var mongoose= require('mongoose');
mongoose.connect("****");

var db = mongoose.connection;
db.on(‘error’, console.error.bind(console, 'connection error:'));

var personSchema = new mongoose.Schema({
name : String,
age : Number,
favoriteFoods :[String]
});

var Person = mongoose.model(‘Person’, personSchema);

var createAndSavePerson = function(done) {
var mr = new Person({
name: 'Mrdude',
age: 22,
favoriteFoods: ['Ice Creame', 'Grills']})

mr.save(function(err,data) {
if(err)
  {
    done(err);
  }
else
{
    done(null, data);
}
});

};

this is working fine now i made a mistake in call back function so the properties was not accessible. 现在工作正常,我在回调函数中犯了一个错误,因此无法访问属性。 i was returning "mr" which was not right. 我返回的是不正确的“先生”。

You've placed wrong position of callback function. 您将回调函数放置在错误的位置。

Your done is callback function which is passed to createAndSavePerson , so it should be call when save is completed. done是传递给createAndSavePerson回调函数,因此save完成后应调用它。

var mongoose= require('mongoose');
mongoose.connect("****");

var db = mongoose.connection;
db.on(‘error’, console.error.bind(console, 'connection error:'));

var personSchema = new mongoose.Schema({
    name : String,
    age : Number,
    favoriteFoods :[String]
});

var Person = mongoose.model(‘Person’, personSchema);

var createAndSavePerson = function(done) {
 var mr = new Person({
    name: 'Mrdude',
    age: 22,
    favoriteFoods: ['Ice Creame', 'Grills']})

  mr.save(function(err, mr) {
    return done(err, mr);
  });

  // Wrong position
  // done(null, mr); 
};


// Call function when you need
createAndSave((err, data) => {
  if (err) console.log(err);
  else console.log(data);
})

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM