验证 MongoDB 中是否有任何文档

Validating if there are any documents in MongoDB

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

我有这个功能:

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

当数据库中至少有 1 个文档时,它工作正常。我如何添加验证以检查 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 的文档。在找到文件的情况下,代码正常运行!

希望这能解决您的问题,如果这让您更加困惑,请提前致歉。谢谢!