再會。
在我正在構建的網站中,我希望用戶能夠從資料庫中洗掉促銷代碼,但由于某種原因,我的洗掉按鈕不起作用,我不確定我缺少什么。
當按下洗掉按鈕時,它應該從資料庫中完全洗掉促銷代碼,但什么也沒有發生。它只是回傳到促銷代碼表并且代碼仍然保留在那里,即使在再次重繪 和獲取代碼之后代碼仍然存在,并仔細檢查資料庫以查看代碼是否也在那里以及代碼是否存在。
我還檢查了命令提示符,洗掉函式被接收并執行,沒有任何錯誤,控制臺日志沒有顯示任何錯誤,并且在網路中它顯示 deletepromocodes 是用回應代碼 201 創建的
我正在使用 MongoDB、Reactjs 和 Nodejs 創建網站。
這是API中的代碼:
exports.deletePromoCode = function (req, res) {
promoCodeModel.PromoCode.deleteOne({
promoCode: req.body.promoCode
}, {
}, function (err, promoCode) {
if(err) {
console.log(err);
return res.status(501).send(err);
}
return res.status(201).send(promoCode);
});
};
這是APP中后臺的代碼:
export function deletePromoCode() {
return new Promise(async (resolve,reject) => {
$.ajax({
type: "POST",
url: server apiCallPromos 'deletepromocode',
contentType: 'application/json',
dataType: 'json',
crossDomain: true,
beforeSend: function(xhr) {
xhr.setRequestHeader('Authorization', 'Bearer ' sessionStorage.token);
},
success: async data => {
resolve(data);
},
error: async(xhr) => {
if (xhr.responseText) {
reject( xhr.responseText );
} else {
reject("No Connection Found!");
}
}
});
});
}
這是點擊洗掉按鈕時APP檔案上的代碼:
handleDeletePromoCode = (promoCode) => {
deletePromoCode(promoCode)
.then((res) => {
getPromoCodes();
})
.catch((err) => {
Notify("error", err, 3, "bottomRight");
});
};
最后是 API 中的 Router.js 檔案:
const promocodes = require('./promocodes.js');
app.get('/test/api/promocodes/getpromocodes', jwt({
secret: secret.secretToken
}), promocodes.getPromoCodes);
app.post('/test/api/promocodes/addpromocode', jwt({
secret: secret.secretToken
}), promocodes.addPromoCode);
app.post('/test/api/promocodes/deletepromocode', jwt({
secret: secret.secretToken
}), promocodes.deletePromoCode)
然后是洗掉按鈕的代碼:
<Column
title="Actions"
render={(text, promoCode) => (
<span>
<a
onClick={(e) => this.handleEditPromoCode(promoCode)}
>
Edit
</a>
<Divider type="vertical" />
<a
onClick={(e) => {
this.handleDeletePromoCode();
}}
>
Delete
</a>
</span>
)}
/>
促銷代碼模型架構:
const mongoose = require("mongoose");
const bcrypt = require("bcryptjs");
const { Int32 } = require("bson");
const Schema = mongoose.Schema;
const promoCodeModel = new Schema({
promoCode: {
type: String
},
discount: {
type: Number,
},
active: {
type: Boolean,
default: true,
},
delete: {
type: Boolean,
default: false,
}
}, {
toJSON: {
transform: function (doc, ret) {
}
}
});
const PromoCodeModel = mongoose.model('promoCodeModel', promoCodeModel, 'promocodes');
exports.PromoCode = PromoCodeModel;
所有幫助將不勝感激,謝謝,一直在努力解決這個問題,嘗試使用谷歌搜索問題,但這也沒有多大幫助
uj5u.com熱心網友回復:
您的前端發送一個 POST 請求后端洗掉促銷代碼。哪個促銷代碼?AJAX 呼叫沒有正文,因此 req.body.promoCode 將是未定義的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/357789.html
