我的服务器端有一个User模型,它看起来像这样:
const schema = new Schema({
username: {
type: String,
required: true
},
password: {
type: String
},
email: {
type: String
},
avatar: {
type: String
},
friends: [{
type: Schema.Types.ObjectId,
ref: 'User'
}]
})
我为登录用户和用户提供了不同的页面,可以由其他用户添加到好友列表中。我有一个“添加到朋友”按钮,通过单击它,用户应该被添加到“朋友”字段中给点击该按钮的用户。
这是我如何从用户那里获取朋友字段中的所有用户:
api.get('/data/getfriends', async (req, res) => {
const userID = req.query.userID
const User = ctx.models.User
try {
const friends = await User.findByID({_id: userID}).populate('friends')
return res.json({
friends
})
} catch (err) {
return err
}
})
这是我应该将用户添加到另一个用户“朋友”字段的路线:
api.get('/data/friendship', async (req, res) => {
})
但是我不知道如何通过点击按钮将用户添加到此字段。
答案 0 :(得分:1)
//被修改 我没注意到你的数组只是一个ID数组。 在这种情况下,你应该尝试$ push。
User.update({'_id': uid}, {'$push': {'friends': id}});
您也可以使用User.findOneAndUpdate而不是User.update,因为您很可能一次只更新一个用户:)