我的api中有一个端点,该端点会删除一个特定的文档:
exports.removeProduct = (req, res) => {
const productId = req.params.productId
Product.deleteOne({ _id: productId }, (err) => {
// handle response
})
}
由于已删除的文档不再在数据库中,因此此时应将其删除。 不过,我在调用此文件时会检索已删除的文档:
exports.getUnpublished = (req, res) => {
var unpublishedProducts = []
const userId = req.params.userId
Product.find({ userId: userId, published: false }, (err, products) => {
products.forEach((product) => {
if (Number(product.createdAt) === Number(product.updatedAt)) {
Product.remove({ _id: product._id }).exec();
} else {
unpublishedProducts.push(product)
}
})
// handle response
})
}
为进行解释:首先,我找到所有具有特定userId
且尚未published
的文档。然后,我遍历所有找到的文档,并删除所有从未更新过的文档。所有其他文档都被推入unpublishedProducts
数组中。
奇怪的是,unpublishedProducts
数组包含已被删除的文档。
P.S .:我注意到,重新启动服务器后,已删除的文档不再位于unpublishedProducts
数组中。
答案 0 :(得分:1)
您可以通过添加deleted: {type: Boolean, default: false}
属性来更新产品架构。
在removeProduct
上,您可以使用
Product.updateOne({ _id: productId }, {$set: {deleted: true}}, (result) => {
// handle response
})
要检索所有未删除的产品,可以使用此查询Product.find({deleted: {$ne: true}})