【发布时间】:2020-06-10 09:35:54
【问题描述】:
您好,我被困在这一点上,我有一个团队模型,如下所示。
var teamSchema = new mongoose.Schema({
name:{
type : String
},
members :[
{
type: mongoose.Schema.ObjectId,
ref: 'Users'
}
],
leads:[
{
type: mongoose.Schema.ObjectId,
ref: 'Users'
}
],
admin_rights :[
{
type: mongoose.Schema.ObjectId,
ref: 'Users'
}
],
view_rights :[
{
type: mongoose.Schema.ObjectId,
ref: 'Users'
}
]
});
我在这个模型中引用了User Schema。
我想删除 leads 数组中的一个元素。我尝试了很多次,但它显示如下..
{
"n": 1,
"nModified": 0,
"opTime": {
"ts": "6797745245908893697",
"t": 4
},
"electionId": "7fffffff0000000000000004",
"ok": 1,
"operationTime": "6797745245908893697",
"$clusterTime": {
"clusterTime": "6797745245908893697",
"signature": {
"hash": "Sdl1QzsqCcO7SKS95+N1Gx7rkJY=",
"keyId": "6762348659485966337"
}
}
}
这是删除数组元素的代码,但它不起作用。
router.get('/deletelead', (req, res) => {
var _id = req.query.team_id;
var id_to_delete = req.query.id;
Team.update({ _id: _id }, { "$pull": { "leads": { id_to_delete } } }, { safe: true }, function(err, obj) {
if(!err){
res.json(obj)
}
else
res.json(err)
});
});
我在 stackoverflow 上检查了其他相同的问题,但我无法解决我的问题。
实现这一目标的正确要求是什么?
【问题讨论】:
-
您是否尝试将
id_to_delete转换为ObjectId? -
不,我该怎么做?
-
mongoose.Types.ObjectId(id_to_delete)
-
我检查过但没有变化。回复是一样的
-
@HammadAli : 不确定
n:1怎么样,但你可以试试这个Team.update({ _id: mongoose.Types.ObjectId(_id) }, { "$pull": { "leads": mongoose.Types.ObjectId(id_to_delete) } },你不必使用安全选项,因为它默认为true。
标签: javascript arrays node.js mongodb mongoose