node.js - 如何使用 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。
解决方案
关闭!
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
推荐阅读
- javascript - Jquery在函数onclick内取值
- svg - 如何使用 SVG 创建与曲线的平滑连接?
- swift - 如何将自定义大图像添加到 TabBar 控制器栏项?
- android - Android Studio 中的 Android 和 Androidx 包有什么区别?
- c# - 为什么 ResizeArray 在我的代码中不起作用?
- excel - 指定宏的源和目标单元格
- spring - 在反序列化spring类时如何配置Spring使用的默认ObjectMapper以使用自定义反序列化器
- sql - 我应该如何编写 JOIN 子句以使其正常工作?
- web - 准确的uri解析是不可能的吗?
- php - CodeIgniter Datatable 加入搜索(json_encoded 数据)