【发布时间】:2021-06-02 10:06:28
【问题描述】:
我是 mongodb 和 mongoose 的新手。
请帮帮我!我陷入了下面描述的这个问题。
这是我的代码。 addressSchema 和另一个用于保存用户 ID 和地址的架构
当我尝试更新文档时,我没有从下面的代码中得到任何响应。 但是当我尝试“find()”时,我得到了响应。
const addressSchema = mongoose.Schema({
name: {
type: String,
required: true,
trim: true,
min: 2,
max: 40
},
mobileNo: {
type: String,
required: true,
trim: true
},
pincode: {
type: String,
required: true,
trim: true
},
landmark: {
type: String,
required: true,
trim: true
},
address: {
type: String,
required: true,
trim: true
},
area: {
type: String,
required: true,
trim: true
},
state: {
type: String,
required: true,
trim: true
},
alternatePhoneNo: {
type: String
},
addressType: {
type: String,
required: true,
enum: [ 'home', 'work' ]
}
})
Schema for storing the address array and user ID
const userAddressSchema = mongoose.Schema({
user: {
type: mongoose.Schema.Types.ObjectId,
required: true,
ref: 'User'
},
address: [addressSchema]
}, { timestamps: true })
I tried updating many ways but still cant update
//更新文档的代码
const editAddress = (req, res) => {
const { address } = req.body
if(address) {
UserAddress.findOne({ user: req.user._id })
.exec((error, _userAddress) => {
if(error) return res.status(400).json({ error })
if(_userAddress) {
UserAddress.findOneAndUpdate({ "_id": _userAddress._id,"address._id": address._id }, {
"$set": {
"address.$": {
"name": address.name,
"mobileNo": address.mobileNo,
"pincode": address.pincode,
"landmark": address.landmark,
"address": address.address,
"area": address.area,
"state": address.state,
"alternatePhoneNo": address.alternatePhoneNo,
"addressType": address.addressType
}
}
})
.exec((error, data) => {
if(error) return res.status(400).json({ error })
if(data) return res.status(201).json({ data })
console.log(error)
console.log(data)
})
}
})
}
}
请大家帮忙 提前致谢
【问题讨论】:
-
你从哪里得到这个属性**_userAddress._id **?
-
@MontyTomar 更改了我的代码,请检查
-
尝试添加 new: true and returnOriginal: false and also upsert
-
UserAddress.findOneAndUpdate({ "_id": _userAddress._id,"address._id": address.id },试试去掉** address._id **属性值前的下划线。
-
我试过了还是没有反应
标签: javascript node.js mongodb express mongoose