[英]Patch (findByIdAndUpdate) in Mongoose
我必须在 Node/Mongoose API 中做一个简单的 CRUD。 我还必须进行put
和patch
并且在做 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.