node.js - MongoDB 通过节点查询返回可见结果,但 Postgres 没有?
问题描述
我一直在使用 mongoose 在节点中使用 mongoDB。当对路由(例如 localhost:7000/restaurants)发出 GET 请求并显示一个充满匹配对象的数组时,将对 mongoose 进行以下查询
async func() {
return this.Restaurants.find({$or: [{city: somecity}, {postal_code: somepostalcode}]}).then(result => {
return result;
})
}
我使用 postgres 尝试了类似的事情,但是,调用它不会在浏览器上返回任何内容,但已成功登录到控制台:
async func(){
return await client.query(`SELECT * FROM restaurants WHERE city = '${somecity}' OR postal_code = '${somepostalcode}';`, (err, res) => {
console.log(res.rows);
return res.rows;
})
}
如果它们似乎都返回相同类型的对象,为什么会发生这种情况?有没有办法让 postgres 结果可见?
感谢您的帮助!
解决方案
这很可能是因为 postgres API 是基于回调的。您需要将回调包装在 promise 中,并在 resolve 中返回查询响应。将代码更新为以下内容应该会有所帮助:
async func(){
return new Promise((resolve, reject) => {
client.query(`SELECT * FROM restaurants WHERE city = '${somecity}' OR postal_code = '${somepostalcode}';`, (err, res) => {
if(err) {
return reject(err)
}
return resolve(res.rows);
})
})
}
推荐阅读
- javascript - 从后端接收 JSON 时,删除了 long 的最后 2 位
- node.js - MongoDB无法在NodeJS的另一个文件中获取集合
- python - 为什么添加图例后我的 python 绘图代码运行如此缓慢?
- python - 分割算法
- python - Smtplib 在 python3 中给出错误。不明白为什么
- javascript - 在 ReactJs 中持续观察条件是否为真而不渲染
- rust - fn 项和 fn 指针之间的实际区别是什么?
- prisma - 如何使用 Prisma 过滤没有相关记录的记录?
- php - 当数组是普通数组和嵌套数组的混合时,显示数组中的所有数据
- python - Popen 获取 TypeError:预期的 str、字节或 os.PathLike 对象,而不是 linux 上的元组