【发布时间】:2020-05-14 12:50:51
【问题描述】:
所以我现在有这种类似的模式
user:{ _id: string,
shifts:[_id:string],
name: ... ,
...
}
现在我想从所有拥有这个的用户中删除一个 shift._id。
我已经有一个数组,其中包含他们的 id 具有此 shift._id 的所有用户。
我试过了,用 shift_id 作为我要删除的班次的 id:
userIdArray.forEach(user_id => {
UserSchema.update({_id: user_id}, {$pull: {shifts: shift_id} });
});
并得到错误:
UnhandledPromiseRejectionWarning: Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at ServerResponse.setHeader (_http_outgoing.js:535:11)
谁能解释我做错了什么?
编辑:
所以我所做的是,我调用了一个名为:
function deleteShiftIdInUsers(users, shift_id){
users.forEach(user_id => {
UserSchema.update({_id: user_id}, {$pull: {shifts: shift_id} });
});}
并在我的 async (req, res, next) 路由中调用了这个函数。
现在我只是在异步函数中执行此代码,而不是像 code...;
deleteShiftIdInUsers(users, shift_id);
res.status(200).json(...); 那样执行此代码
还是 js 新手,我做错了什么?
【问题讨论】:
-
你提到的错误不是 MongoDB 检查这个答案 - stackoverflow.com/questions/7042340/…
-
@PuneetSingh,你能帮我吗?因此,如果您阅读编辑,您会发现我的逻辑是……您知道在哪里或什么吗?
-
你仍然在代码中循环调用你的查询不要这样做,使用更新很多,并使用 asun/await 等待