如何将用户添加到mongoose中的另一个用户“friends”字段

时间:2017-10-27 12:18:11

标签: node.js express mongoose

我的服务器端有一个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) => {

  })

但是我不知道如何通过点击按钮将用户添加到此字段。

1 个答案:

答案 0 :(得分:1)

//被修改 我没注意到你的数组只是一个ID数组。 在这种情况下,你应该尝试$ push。

User.update({'_id': uid}, {'$push': {'friends': id}});

您也可以使用User.findOneAndUpdate而不是User.update,因为您很可能一次只更新一个用户:)