[英]Updating field value in a MongoDB document is turning string into object
我目前正在使用 React TypeScript、MongoDB 和 Express.js 制作一个项目。 我正在尝试更新我的 MongoDB 文档中的字段值,它应该是一个字符串,但它会自动将其转换为 object。 以前有人遇到过这个问题吗? 如果是这样,你是如何解决的?
它应该是怎样的:
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);
}
任何帮助将不胜感激。 谢谢。
每次使用as
时,都意味着出现问题。
const name = req.body as string;
你的身体不是真正的string
,你的身体是 object:
{
"string": ""
}
const { string: name } = req.body;
提出请求。 当以正文形式发送数据时,它将以 json 的形式到达您的服务器中。 所以你可以解构它或者在你的路由方法中使用点符号。
return axios.put(`${baseUrl}/change-name`, {name:name})
从主体中解构变量
const {name} = req.body;
更新文档
... {$set: {character_name: name}}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.