所以我正在構建這個出價應用程式,該特定應用程式的貓鼬模式看起來像這樣
const bidSchema = new mongoose.Schema({
name: String,
price : Number,
description: String,
location: String,
specilization: String,
image: String,
highestBidder: {
highBidderName: String,
highPrice: Number,
},
previousBidders: [{previousName: String , previousPrice: Number}],
isClosed: {
type: Boolean,
}
})
在上面的架構中,isClosed 的值將保持為 none,如果該人關閉了出價,我將為該 isClosed 變數設定一個真值并進行相應的操作。這里的問題是它的安全部分,就像任何人實際上都可以使用類似 postman 的東西在該表單的編輯欄位中發送一個 put 請求,其值類似于
isClosed : false
,正在更新中。有什么我可以做的,這樣用戶只能為它設定假值,一旦設定,沒有人應該能夠修改它?
uj5u.com熱心網友回復:
有兩種方法可以解決這個問題 -
- 最常用- 你可以做一個 findOne({ YOUR_UNIQUE_KEY: SOME_VALUE }) ,在你的代碼中添加一個條件 if isClosed : true - throw Error else 做你的操作
- 既然是做競價APP,就應該期待高并發。你可以試試這個db.insertIfNotExistsDemo,你可以在這里查看 - https://www.tutorialspoint.com/insert-records-in-mongodb-collection-if-it-does-not-exist
uj5u.com熱心網友回復:
一種可能的解決方案是:從資料庫中檢索您的出價,檢查 if 的值isCloses == true是否進行更新。
Bid.findOne({ name }, function (err, bid) {
if(bid.isClosed) {
console.error('Bid is closed')
};
bid.save(function (err) {
if(err) {
console.error('ERROR!');
}
});
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/315642.html
下一篇:Lambda函式在完成前退出
