[英]update data in mongodb using nodejs
我是 NodeJS 和 mongodB 的初學者,我正在使用 mongoose 並嘗試使用此代碼更新產品數據
return new Promise((resolve, reject) => {
mongoose.connect(DB_URL, { useUnifiedTopology: true, useNewUrlParser: true }).then(() =>
feature = new FaeturesModel({
name: featureName,
description: featureDesc,
catagory: featureCatagory,
price: featurePrice + ' IQD' ,
image: featureImage,
dateOfCreation: new Date().toJSON().slice(0, 10).replace(/-/g, '/')
})).then(() => {
return FaeturesModel.updateOne({"_id" : id} , {$set : {feature}})
.then(()=> feature.save())
.then(() => {
mongoose.disconnect();
resolve()
}).catch(err => {
mongoose.disconnect();
reject(err)
})
}
)
})}
問題是記錄被添加為新記錄而不刪除舊記錄
保存文檔會創建一個新文檔。 如果你想更新一些東西:
await Model.updateOne({ _id: doc._id }, { $set: { name: 'foo' } })
基本上刪除.then(()=> feature.save())
就可以了。
這是來自文檔。
編輯
抱歉,我忘了提一下,當您更新時,您不會像這樣new Feature()
創建一個新文檔,而是說:
Model.updateOne({ _id: id }, { $set: req.body }).then(res => {
// do stuff
})
因為new Feature()
會創建一個附加了新_id
的新文檔,所以您無法更新現有文檔。
希望現在很清楚:D
編輯 2
這不是問題的一部分,但使用
const schema = new Schema({
...
},
{ timestamps: true });
在您的架構中
dateOfCreation: new Date().toJSON().slice(0, 10).replace(/-/g, '/')
保存創建日期更容易。
exports.updateFeature = (id,featureName, featureCatagory, featurePrice , featureDesc , featureImage) => {
return new Promise((resolve, reject) => {
mongoose.connect(DB_URL, { useUnifiedTopology: true, useNewUrlParser: true }).then(() =>
feature =({
name: featureName,
description: featureDesc,
catagory: featureCatagory,
price: featurePrice + ' IQD' ,
image: featureImage,
dateOfCreation: new Date().toJSON().slice(0, 10).replace(/-/g, '/')
})).then(() => {
return FaeturesModel.updateOne({'_id' : id} , {$set : feature})
.then(() => {
mongoose.disconnect();
resolve()
}).catch(err => {
mongoose.disconnect();
reject(err)
})
}
)
})}```
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.