The schema of my Sample model is:-
var nameSchema = new mongoose.Schema({
firstname:String,
lastname:String
})
var sampleSchema= new mongoose.Schema({
number: {
type: String
},
name :{
type : [nameSchema]
}
});
我正在尝试通过使用Sample.findOne({number:number})按其number属性搜索姓氏和名字来更新它们。并且我以以下方式执行更新操作:-
module.exports.updateNumber = function(req, res){
var number= req.body.number;
var lname= req.body.lname;
var fname= req.body.fname;
Sample
.findOne({number:number})
.select('name')
.exec(function(err, doc){
console.log(doc)
var this_id;
var thisService = doc.name.id('this_id');
thisService.firstname=fname;
thisService.lastname=lname;
doc.save(function(err, update) {
if (err) {
res
.status(500)
.json(err);
} else {
res
res.render('done')
}
});
})
}
如果我在控制台日志中得到的输出是:
{ _id: 5bc5d71f47ff14361c0639d1,
name:
[ { _id: 5bc5d71f47ff14361c0639d2,
firstname: 'firstname',
lastname: 'lastname' } ] }
有什么办法,我可以将_id:5bc5d71f47ff14361c0639d2存储在“ this_id”变量中,以便进行此更新
答案 0 :(得分:1)
name是一个数组,因此,如果您想要第一个_id
,那么name[0]._id
就足够了;如果您想要一个包含_id
的所有值的数组,那么{{1} }会为您提供name.map((person) => person._id)
However, more details about the context of this object would help give a better answer.