我目前正在使用 React TypeScript、MongoDB 和 Express.js 制作一個專案。我正在嘗試更新我的 MongoDB 檔案中的欄位值,它應該是一個字串,但它會自動將其轉換為一個物件。以前有人遇到過這個問題嗎?如果是這樣,你是如何解決的?
它應該是怎樣的:
character_name: "string"
它是如何更新的:
character_name: {
"string": ""
}
我什至在控制臺中記錄了它以向我顯示資料的型別,它說它是一個字串,所以我不知道它可以做什么?
后端路由:
routes.put("/change-name", async (req, res) => {
const name = req.body as string;
try {
const client = await getClient();
const result = await client.db().collection<Account>('accounts').updateOne({ username: "AndrewDamas" }, {$set: {character_name: name}});
if (result.modifiedCount === 0) {
res.status(404).json({ message: "Not Found" });
} else {
res.json(name);
}
} catch (err) {
console.error("FAIL", err);
res.status(500).json({ message: "Internal Server Error" });
}
});
前端的服務代碼:
export function changeName(name: string){
return axios.put(`${baseUrl}/change-name`, name)
.then(res => res.data);
}
以及我如何在我的代碼中使用它:
function saveData(){
console.log(ourCharacterName);
changeName(ourCharacterName);
}
任何幫助將不勝感激!謝謝。
uj5u.com熱心網友回復:
提出請求。當以正文形式發送資料時,它將以 json 格式到達您的服務器。所以你可以解構它或者在你的路由方法中使用點符號。
return axios.put(`${baseUrl}/change-name`, {name:name})
從主體中解構變數
const {name} = req.body;
更新檔案
... {$set: {character_name: name}}
uj5u.com熱心網友回復:
問題
每次as在 TypeScript 中使用都意味著出現問題。
const name = req.body as string;
你的身體不是真正的 a string,你的身體是物件:
{
"string": ""
}
解決方案
const { string: name } = req.body;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/507661.html
標籤:javascript 反应 打字稿 mongodb 表示
下一篇:無法獲取路線
