当我在postman中点击delete方法时,我需要禁用MongoDB中的数据,而不是完全删除。2怎么做呢?
router.delete("/admin/delete_profile/:id", async (req, res) => {
try {
await SomeModel.findByIdAndDelete(req.params.id.trim());
return send(res, RESPONSE.SUCCESS);
} catch (err) {
// res.status(404).send(err.message);
return send(res, RESPONSE.UNKNOWN_ERROR);
}
});
schema.js
const { json } = require("body-parser");
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const SomeModelSchema = new Schema({
first_name: {
type: String,
required: true,
},
last_name: {
type: String,
required: true,
},
image: {
data: Buffer,
type: String,
required: true,
},
});
module.exports = mongoose.model("SomeModel", SomeModelSchema);
2条答案
按热度按时间z2acfund1#
您可以在数据库中保留一个类似
isActive:true
的关键字,以便进行软删除。当您点击delete api时,您只需将此关键字更改为false即可。这样,您就可以将此文档与其他文档区分开来,并且当您需要列表时,您可以在查询中检查包含isActive:true
的文档。zdwk9cvp2#
事实上,在我看来,@PawanYadav建议的方法是一个很好的方法。
在架构中声明
Boolean
标志isActive
(默认为true
):并使用
findByIdAndUpdate
将标志设置为false
以禁用数据: