簡體   English   中英

貓鼬中的補丁 (findByIdAndUpdate)

[英]Patch (findByIdAndUpdate) in Mongoose

我必須在 Node/Mongoose API 中做一個簡單的 CRUD。 我還必須進行putpatch並且在做 patch 時,我有點困惑,因為我想使用findByIdAndUpdate方法,但是正如我在示例中看到的那樣,只有一條記錄更新,例如{name: "newName"} . 我想知道如果例如我想更新兩個單元格,我該怎么辦?

我的架構:

const userSchema = new Schema({
    login: String,
    email: String,
    registrationDate: Date,
});

我的補丁代碼:

router.patch('/:id', async (req, res) => {
    const id = req.params.id;
    User.findByIdAndUpdate(id, { ??? },
        function (err, docs) {
            if (err){
                console.log(err)
            }
            else{
                console.log("Updated User : ", docs);
            }
        });

});

我不知道我應該在“???”中寫什么,因為如果我只想更新登錄名怎么辦,如果我想更新姓名和電子郵件怎么辦? 也許我錯了, PATCH僅用於編輯一個單元格,在其他情況下我應該使用PUT嗎?

編輯:

我使用這樣的東西讓它工作:

router.patch('/:id', async (req, res) => {
    const id = req.params.id;
    let updates={}
    if (req.body.login) {
        updates["login"] = req.body.login
    }
    if (req.body.email) {
        updates["email"] = req.body.email
    }
    if (req.body.registrationDate) {
        updates["registrationDate"] = req.body.registrationDate
    }
    User.findByIdAndUpdate(id, updates,
        function (err, docs) {
            if (err){
                console.log(err)
            }
            else{
                console.log("Updated User : ", docs);
            }
        });

});

無論如何,我有一個問題,我應該怎么做才能“停止”這個動作。 我用的是HTTPie ,寫http PATCH的時候……,好像寫不了別的,因為還在工作,需要CTRL+C停止查詢。

只需將要更改的字段和以逗號分隔的新值寫入即可。

const id= req.params.id;
const email = "newemail";
const date = "1991/13/01";
const user = await User.findByIdAndUpdate(
    {
      _id: id,
    },
    { email, registrationDate: date},
    { upsert: false }
  );

暫無
暫無

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

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