首页 > 解决方案 > Mongoose 删除文档字段而不是整个文档

问题描述

查询不是删除 otp 属性,而是删除整个文档

架构。验证后我想删除otp

const LoginSchema = new mongoose.Schema({
    email: String,
    password:String,
    verified: Boolean,
    otp:Number
});

const Model = mongoose.model("Users", LoginSchema);

在 Post 请求中查询

 app.post("/verify/:id", async(req, res) => {

var User = await Model.findOne({ _id: req.params.id, otp:req.body.otp });

Model.deleteOne({ otp: User.otp }, (err, res) => {
                    if (err) console.log(err)
                    else console.log("succesful");
                })
})

标签: node.jsmongoose

解决方案


那是因为您在使用“ deleteOne ”时删除了一个文档。您需要$unsetotp 属性。

试试这个:

Model.findOneAndUpdate({ otp: User.otp }, {$unset: {otp: 1 }},(err, res) => {
                    if (err) console.log(err)
                    else console.log("succesful");
                })
})

推荐阅读