我做不到。
我有两个不同的模式,用户模式和生命体征模式。生命体征模式作为数组位于userSchema中。我需要做的是编辑具有唯一ID的特定vitalSigns对象
这里是一个 Postman 的信息,我需要更新的例子
const userSchema = new mongoose.Schema({
email:{type: String, required: true},
password:[{type: String, required: true}],
confirmPassword:[{type: String, required: true}],
personalData: personalDataSchema,
vitalSigns: [vitalSignsSchema],
})
const vitalSignsSchema = new mongoose.Schema({
systolic: { type: 'Number', required: false },
diastolic: { type: 'Number', required: false },
temperature: { type: 'Number', required: false },
pulse: { type: 'Number', required: false },
rate: { type: 'Number', required: false },
blood: { type: 'Number', required: false },
date: { type: 'Date', required: false },
})
我的路径同时捕获userId和vitalSigns,因为我尝试了很多方法,但都失败了
Router.post('/user/:userId/vitalSignsEdit/:vitalId', async (req, res) => {
userServices.editVitalSigns(req.params.userId,req.params.vitalId, req.body)
})
下面是一个例子,我尝试使用它来使它工作,但它没有更新特定的vitalSigns ID,而是创建了另一个vitalSigns对象,具有我试图更改的相同ID。
User.findById(userId)
.then( user => {
if(user) {
if(user.vitalSigns.find( e => e._id === data._id)) {
User.updateOne({_id: userId}, { vitalSigns: [...user.vitalSigns, data] })
.then(e => console.log(e), i => console.log(i))
}
}
})
希望有人能帮我拿这些。
2条答案
按热度按时间jgwigjjp1#
您可以使用
$push
kyxcudwk2#
使用
$
访问匹配的数组元素。Mongo Playground