我正在尝试构建一条路线来删除所有具有实体
"techs":[]
的对象。
我正在训练 mongoose 并在发生错误的地方犯了一个错误,并且我向 API 发送了错误的信息。
所以,我构建了代码:
router.delete("/delete", connectDatabase, async (req, res, next) => {
try {
const resDB = await SchemaProjects.deleteMany({ techs: [] });
res.status(200).json({
status: "OK",
statusMensagem: "Projects sucefully deleted",
response: resDB,
});
} catch (error) {
res.status(500).json("internal server error");
}
});
但它会捕获并返回:
“内部服务器错误”。
我的API...
[
{
"_id": "6589873d4e3eb0cee59435dc",
"type": "landing",
"title": "Google Clone",
"description": "Google Clone landinpg page",
"techs": [],
"imageUrl": "https://i.ibb.co/wp9mHmq/google.png",
"__v": 0
},
{
"_id": "658dc7bb77d42309479a0d79",
"type": "landing",
"title": "Google Clone",
"description": "Google Clone landinpg page",
"techs": [],
"imageUrl": "https://i.ibb.co/wp9mHmq/google.png",
"__v": 0
},
{
"_id": "658dc7bd77d42309479a0d7b",
"type": "landing",
"title": "Google Clone",
"description": "Google Clone landinpg page",
"techs": [],
"imageUrl": "https://i.ibb.co/wp9mHmq/google.png",
"__v": 0
},
{
"_id": "658de1f581c1748f5c5ce802",
"type": "landing",
"title": "Google Clone",
"description": "Google Clone landinpg page",
"techs": [],
"imageUrl": "https://i.ibb.co/wp9mHmq/google.png",
"__v": 0
},
]
让我困惑的是,这就是它的工作原理......
router.get("/get", connectDatabase, async (req, res, next) => {
try {
const resDB = await SchemaProjects.find({ techs: [] });
res.status(200).json({
status: "OK",
statusMensagem: "Project sucefully deleted",
response: resDB,
});
} catch (error) {
res.status(500).json("internal server error");
}
});
并且API正确返回数据,相同的实体和值(
{ techs: [] }
)
$size
运算符来检查长度为 0 的数组,如下所示:
const resDB = await SchemaProjects.deleteMany({ techs: { $size: 0 } });
或者使用查询生成器语法:
const resDB = await SchemaProjects.where('techs').size(0).deleteMany();