Node.js Mongoose删除文档字段而不是整个文档
查询不是删除otp属性,而是删除整个文档Node.js Mongoose删除文档字段而不是整个文档,node.js,mongoose,Node.js,Mongoose,查询不是删除otp属性,而是删除整个文档 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
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");
})
})
模式。我想在验证后删除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");
})
})
这是因为您在使用“deleteOne”时删除了文档。您需要
$unset
otp属性
试试这个:
Model.findOneAndUpdate({ otp: User.otp }, {$unset: {otp: 1 }},(err, res) => {
if (err) console.log(err)
else console.log("succesful");
})
})
这实际上是很短的代码,问题出在这里。我跳过了所有不相关的内容。看看删除字段
otp
的原因是什么?例如,仅仅将其设置为null
或false
,还不够吗?我实际上是在更新它,它将为null。但后来我意识到,我将来可能需要这个概念,但对象不同。{otp:1}
这个值是什么意思?如果没有影响,您可以阅读更多内容: