簡體   English   中英

查找和更新記錄 - Mongoose

[英]Finding and Updating record - Mongoose

我正在構建一個 API 來存儲游戲的朋友姓名,我已經構建了 API 來接收發布請求,如下所示:

exports.addFriends = async (req, res) => {
  try {
    console.log('hit');
    console.log(req.body.friendNames);
    const addUser = await User.updateOne(
      { uniqueid: req.body.uniqueid },
      { $push: { friendNames: [req.body.friendNames] } }
    );
    res.json({
      addUser
    });
  } catch (error) {
    console.log(error);
  }
};

將發布請求廣告為

      const friends = await axios.post('/api/v1/users/add/friends', {
          uniqueId: this.uniqueid,
          friendNames: [
            {
              userName: 'test',
              region: 'euw'
            }
          ]
        });

我的 API 被擊中作為查看日志,但沒有記錄。 我的用戶架構是這樣

const userSchema = new mongoose.Schema({
  uniqueid: {
    type: String,
    required: true,
    trim: true
  },
  summonerName: {
    type: String
  },
  friendNames: [
    {
      userName: String,
      region: String
    }
  ]
});


我沒有收到錯誤,請求似乎通過了,但沒有添加任何記錄。 有任何想法嗎?

$push用於向數組添加一個元素。 但是使用$each數組更新運算符,我們可以推送一個項目數組。

此外,我使用findOneAndUpdatenew:true選項來檢索更新的文檔,因為 updateOne 不返回更新的文檔。

exports.addFriends = async (req, res) => {
  try {
    console.log(req.body.friendNames);

    const addUser = await User.findOneAndUpdate(
      { uniqueid: req.body.uniqueid },
      { $push: { friendNames: { $each: req.body.friendNames } } },
      { new: true }
    );

    res.json({ addUser });
  } catch (error) {
    console.log(error);
    res.status(500).send("Something went wrong");
  }
}

假設我們有這個現有文檔:

{
    "_id": "5e31c749f26d5f242c69f3aa",
    "uniqueid": "uniqueid1",
    "summonerName": "John",
    "friendNames": [
        {
            "_id": "5e31c749f26d5f242c69f3ab",
            "userName": "Max",
            "region": "Germany"
        }
    ],
    "__v": 0
}

讓我們用這個請求體向控制器發送一個請求:

{
    "uniqueid": "uniqueid1",
    "friendNames": [
        {
            "userName": "Andrew",
            "region": "England"
        },
        {
            "userName": "Smith",
            "region": "USA"
        }
    ]
}

響應將是這樣的:

{
    "addUser": {
        "_id": "5e31c749f26d5f242c69f3aa",
        "uniqueid": "uniqueid1",
        "summonerName": "John",
        "friendNames": [
            {
                "_id": "5e31c749f26d5f242c69f3ab",
                "userName": "Max",
                "region": "Germany"
            },
            {
                "_id": "5e31c763f26d5f242c69f3ad",
                "userName": "Andrew",
                "region": "England"
            },
            {
                "_id": "5e31c763f26d5f242c69f3ac",
                "userName": "Smith",
                "region": "USA"
            }
        ],
        "__v": 0
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM