繁体   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