node.js - 带有nodejs的mongoDB返回数据
问题描述
我有自己的类和方法调用 findByIdDate() 当我找到数据然后在 db.collection() 内部我会得到结果,但如果我想从我自己的方法返回该数据,它将返回未定义。有人可以为我提供如何获取数据的示例吗?我一直在寻找,但我找不到这个问题的任何答案。我是节点新手并表达 我的方法
findByIdDate(){
let data = this.db.collection('journal').find({date: this.Date}).toArray((err, result) => {
if(err){return console.log(err)}
console.log(result) // I have data
return result
})
return data
}
在我的另一个文件中,我像这样使用它
app.post('/id', (req, res) => {
const DIARY = new diary('new', '16 January 2020', db)
let result = DIARY.findByIdDate()
console.log(result) // undefined
});
解决方案
最好取消回调函数并将函数async/await
设为:
async findByIdDate(){
try {
let data = await this.db.collection('journal')
.find({date: this.Date})
.toArray() // returns a promise which can be 'awaited'
console.log(data)
return data
} catch (err) {
console.error(err)
throw err
}
}
并在您的路线中使用它作为
app.post('/id', async (req, res) => {
try {
const DIARY = new diary('new', '16 January 2020', db)
let result = await DIARY.findByIdDate()
console.log(result)
} catch(err) {
console.error(err)
}
})
推荐阅读
- c# - 如何使用创建的自定义消息框来检查是否单击了是或否?C# WPF
- ios - Xcode 12.4 为模拟器和设备构建,但使用 Pods-MYAPP-frameworks.sh 归档失败:第 131 行:ARCHS [@]:未绑定变量
- python - 无法使用相对路径将模块添加到 `sys.path`
- python - ffmpeg python“调用Python对象时超出最大递归深度”错误
- symfony - Symfony 4.4 不包括 .env.local
- node.js - PM2 无法启动应用程序,应用程序最终处于“错误”状态
- linux - Apache2 到 Nginx - Laravel 7
- python - 火炬:具有显式多处理的自定义数据加载器
- systemd - 如何根据活动的目标向我的 systemd 单元添加额外的参数?
- r - 如何将单列中的两位数字分成R中的两列?