正在验证MongoDB中是否有文档



在尝试将获取的值分配给React状态之前,如何验证MongoDB中是否有文档?

我有这个功能:

useEffect(() => {
const resp = async () => {
await axios.get('http://localhost:4000/app/totalbalance')
.then(
result => setInsertedValue(result.data[0].totalBalance))
}   
resp();
}, []);

当数据库中至少有一个文档时,它可以正常工作。我如何添加验证来检查MongoDB中是否至少有一个文档,这样应用程序就不会崩溃?

谢谢!

假设您的问题是如何在设置反应状态之前确保result.data中有内容,

确保应用程序在没有返回文档时不会崩溃的一种方法是使用默认值(代码中的-1(:

useEffect(() => {
const resp = async () => {
await axios.get('http://localhost:4000/app/totalbalance')
.then(
result => setInsertedValue(result.data && result.data.length>0 ? result.data[0].totalBalance : -1))
}   
resp();
}, []);

如果默认值与输出不一致(例如,-1是有效的插入值(,最好使用默认值null并在渲染中处理该条件。

例如:

useEffect(() => {
const resp = async () => {
await axios.get('http://localhost:4000/app/totalbalance')
.then(
result => setInsertedValue(result.data && result.data.length>0 ? result.data[0].totalBalance : null))
}   
resp();
}, []);
return (
<>
{
insertedValue === null ? <p> no data found </p> :<p></p> // logic when documents exists.
}
</>
);

在这里,我们默认insertedValue = null,以防没有来自mongoDB的数据,并将组件呈现为警报,没有找到来自mongoDB的文档。在找到文档的情况下,代码会正常运行!

希望这能解决你的问题,如果这让你更加困惑,请提前道歉。非常感谢。

相关内容

最新更新