0
在我的模式中,我有兩個數組,包括用戶,inviteUsers和joinedUsers。邀請陣列從請求體創建無法從貓鼬陣列中拉出
invitedUsers: req.body.invitedUsers
用戶點擊通過執行
{$pull: {joinedUsers: {_id: req.user._id}}}
然而「加入」
$addToSet: {joinedUsers: req.user}
然後我可以從joinedUsers陣列拉用戶
加入陣列被更新時,雖然用戶對象是相同的,但我無法從受邀用戶數組中獲取數據。下面是完整的代碼:
app.put('/decline/events/:id', function (req, res) {
var update = {$pull: {invitedUsers: {_id: req.user._id}}};
console.log(req.user._id);
Event.findByIdAndUpdate(req.params.id, update, function (err, event) {
if (err) {
res.send(err);
};
Event.find({})
.populate('owner')
.exec(function (err, events) {
if (err) {
res.send(err);
};
res.json(events)
});
});
});
Ajax調用客戶端
$scope.declineInvitation = function (id) {
$http.put('/decline/events/' + id)
.success(function (data) {
})
.error(function (data) {
console.log('Error: ' + data);
});
};
一切順利沒有錯誤,但invitedArray不改變,就好像貓鼬沒有找到它。什麼可能是解決這個問題的方法?
更新
事件模式定義,要求:
var eventSchema = new Schema({
title: {type: String},
description: {type: String, default: ''},
startDate: Date,
invitedUsers: {type: Array, default: []},
joinedUsers: {type: Array, default: []},
owner: {type: Schema.Types.ObjectId, ref: 'User'},
created_at: {type: Date, default: Date.now()},
updated_at: {type: Date, default: null},
location: String
}
@JohnnyHK肯定的是,我編輯我的問題。 – vitalym
問題可能是因爲'requestedUsers'中的'_id'是一個字符串,'req.user._id'是一個ObjectId。嘗試'var update = {$ pull:{invitedUsers:{_id:req.user._id.toString()}}};'。 – victorkohl
有沒有理由將'joinedUsers'定義爲'Array'而不是像'[userSchema]'這樣的用戶數組?它應該開始工作,如果你這樣做。 – JohnnyHK