【发布时间】:2021-11-13 09:37:57
【问题描述】:
我正在尝试更新设置为 null 的第二个架构 例如。这是我的输出样子
{
"_id": "6145b0c7331a5a4634640f27",
"ownerId": "b0jyt9gvktpl6936",
"fname": "Gravity",
"lname": "Movie",
"shopPlace": null,
"createdAt": "2021-09-18T09:26:31.801Z",
"updatedAt": "2021-09-18T09:26:31.801Z",
"__v": 0
}
我的架构看起来像这样
ownerSchema.js
var ownerSchema = Schema({
ownerId : String,
fname : String,
lname : String,
shopPlace : {
type: Schema.Types.ObjectId,
ref: 'Shop'
},
shopType String
});
var Owner = mongoose.model('Owner', ownerSchema);
shopSchema.js
var shopSchema = Schema({
_id : String,
shopName : String,
location : String,
startDate : Date,
endDate : Date
});
var Shop = mongoose.model('Shop', shopSchema);
我的函数更新看起来像这样
const update = async (req, res) => {
const { id } = req.params;
let update = {};
let updateShop = {}
if (req.body.fname) update.fname = req.body.fname;
if (req.body.lname) update.lname = req.body.lname;
if (req.body.shopPlace.shopName) updateShop.shopPlace.shopName = req.body.shopPlace.shopName;
if (req.body.shopPlace.location) updateShop.shopPlace.location = req.body.shopPlace.location;
const { shopPlace } = await Owner.findOneAndUpdate(
{ _id: id },
{
$set: update,
},
{ new:true}
);
let newShop = await Shop.findOneAndUpdate(
{ _id: shopPlace },
{
$set: updateShop,
},
{new:true}
);
};
如果我的商店架构看起来像这样,我可以通过邮递员轻松更新它
"shopPlace":{
"shopName":"Juice Center",
"location":"mumbai"
}
但如果 shopPlace 为空,然后我尝试更新我的商店架构,它不会更新我的架构并且看起来一样
"shopPlace":null
【问题讨论】:
-
但如果 shopPlace 为空,然后我尝试更新我的商店架构,它不会更新我的架构 =>如果它是
null,它将如何更新,商店收藏中有_id: null的文件吗? -
没有@turivishal,因为我做了 if else 声明,如果用户不想添加商店,那么如果它想更新他的商店,它将在未来无效,这就是我尝试更新商店的原因
-
您的问题不清楚,如果它为空,您是否尝试在商店集合中插入文档?
-
是的,如果数据为空,我将尝试插入数据,这就是我尝试更新商店架构的原因
-
好的,同时更新所有者集合中的 _id 对吗?
标签: node.js mongodb express mongoose mongodb-query