【问题标题】:Validating if there are any documents in MongoDB验证 MongoDB 中是否有任何文档
【发布时间】:2021-06-12 14:47:07
【问题描述】:

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

我有这个功能:

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

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

谢谢!

【问题讨论】:

    标签: reactjs mongodb async-await axios get


    【解决方案1】:

    假设您的问题是如何在设置反应状态之前确保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 的文档。在找到文件的情况下,代码正常运行!

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

    【讨论】:

    • 这正是我想要弄清楚的。它有效并且非常有用。谢谢!
    • 很高兴它有帮助!
    • @grubbyGerbil 如果您对答案感到满意,请将其标记为“有用”。您实际上只为 1 个问题制定了 3 个问题,并且每次您都没有尊重验证建议的答案...stackoverflow.com/questions/67947969/…stackoverflow.com/questions/67949131/…
    • 我对 stackoverflow 完全陌生,我想,我只是将它标记为有用,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2019-10-02
    • 2017-07-25
    • 1970-01-01
    • 2021-09-03
    • 2013-03-09
    • 1970-01-01
    • 2019-02-03
    相关资源
    最近更新 更多