首页 > 解决方案 > 如何使用 node.js 检查 MongoDB 集合中的电话号码是否等效?

问题描述

我试图自己写这样一个函数,但我遇到了一个问题:

router.get('/:number', async (req, res) => {
    const number = req.params.number
    try {
        await User.find({'phone': number})
        .then((result) => {
            if (result != Array) {
                res.send(response1)
            } else {
                res.send(response2)
            }
        })
    } catch (error) {
        res.json({ message: error })
    }
})

此代码首先接收需要检查的数字,然后循环遍历 MongoDB 集合以搜索以下类型的记录{'phone': number}。因此,如果数据库中存在该数字,则该函数应该返回一个对象,如果不存在 - 它应该返回 null。根据这一点,函数应该执行 response1 或 response2。但是,由于某种原因(我还不知道),无论结果如何,它都只会返回 response1。

标签: node.jsmongodb

解决方案


关闭!

router.get('/:number', async (req, res) => {
    try {
        const { number } = req.params
        // users will always return an array
        const users = await User.find({ phone: number })
        res.send(users[0]) // returning index 0 will either return the record if it exists, or it will return null
    } catch (error) {
        res.json({ message: error })
    }
})

users !== Array此外,如果您说正确的语法是Javascript 将不会以您认为的方式响应!Array.isArray(users),因此为什么它总是在运行,因为响应永远不会等于Array您编写它的类

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray


推荐阅读