[英]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.