我正在研究node.js表达框架和猫鼬,我对此是全新的。 这是我的架构。
<asp:DropDownList ID="DDL" runat="server" CssClass="form-control btn-default" Style="font-size: 1.25vw; font-weight: bolder; font-family: Sakkal Majalla; text-align: center; text-align-last:center; color: #1658a4; height: 2.5vw; width: 18vw" TabIndex="2" AutoPostBack="true">
这是我的代码。删除成功,但是没有从数据库中删除数据。
const mongoose = require('mongoose');
const ActivitySchema = mongoose.Schema({
_id: mongoose.Schema.ObjectId,
Activity:String,
Photos:[{
Photo:String,
}]
});
module.exports = mongoose.model('Activity', ActivitySchema);
答案 0 :(得分:0)
您正在使用mongoose.Schema.ObjectId
,因此您的_id
字段是ObjectId
。在delete
逻辑中,您选择req.params._id
,我猜这是一个字符串,而不是ObjectId
,所以它将不起作用。
要从字符串创建ObjectId
,请像这样使用mongoose.Types.ObjectId
:
Activities.findByIdAndUpdate(
{ _id: mongoose.Types.ObjectId(req.params._id) },
...
)
答案 1 :(得分:0)
要获取文档的新版本,请在应用更新后将{new: true}
放入查询中。默认情况下为false。
Activities.findByIdAndUpdate(
{ _id: req.params._id },
{ $pull: { Photos: { _id:req.params._pid } } },
{new : true},
function(err,user) {
if(err) {
res.status(500).json(err);
}
res.status(200).json(user)
}
);
})