2017-03-01 31 views
0

我现在有一个UserSchema看起来如下:节点猫鼬招一个数组元素到另一个阵列

UserSchema = new mongoose.Schema({ 
    username: String, 
    email: String, 
    password: String, 
    pendingFriends: [this], 
    friends: [this] 
}) 

得到一个用户名,我怎么会移动记录从pendingFriends阵列到阵列的朋友?这将发生在当前登录的用户模式中。这是我将朋友放入pendingFriends阵列的路线:

app.post("/addFriend", function(req, res) { 
var conditions = { 
    username: req.body.globalUserName, 
    'pendingFriends._id': {$ne: req.user._id}, 
    'friends._id': {$ne: req.user._id} 
} 
var update = { 
    $addToSet: {pendingFriends: { _id: req.user._id, username: req.user.username, language: req.user.language, profilePicture: req.user.profilePicture}} 
} 

User.findOneAndUpdate(conditions, update, function(error, doc) { 
    if(error) { 
     console.log(currentTime + " - FRIEND_REQUEST_SEND_ERROR: '" + req.user.username + "' TRIED TO SEND A FRIEND REQUEST TO '" + req.body.globalUserName + "'"); 
    } 
    else { 
     console.log(currentTime + " - FRIEND_REQUEST_SENT: '" + req.user.username + "' SENT A FRIEND REQUEST TO '" + req.body.globalUserName + "'"); 
    } 
    res.redirect("/talk"); 
}); 

});

回答

0

我认为下面的代码将有助于

var conditions = { 
username: req.body.globalUserName, 
'pendingFriends._id': {$eq: req.user._id}, 
'friends._id': {$ne: req.user._id} 
} 
var update = { 
    $pop: {pendingFriends: { _id: req.user._id, username: req.user.username, language: req.user.language, profilePicture: req.user.profilePicture}}, 
    $addToSet: {friends: { _id: req.user._id, username: req.user.username, language: req.user.language, profilePicture: req.user.profilePicture}} 
} 

使用这种在findandupdate查询在问题中提到。

相关问题