[英]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.