通过 koa 读取 mongodb 数据时遇到无法正确获取数据的问题
问题
在 findAddUsers.js 中 find() 时,可以正常读取数据,但 return 时就没有数据了
代码
findAddUsers.js
const mongoose = require('mongoose')
let Schema = mongoose.Schema
let UserSchema = new Schema({
name: String,
age: Number
})
let temp = mongoose.model('temp', UserSchema)
exports.findAllUsers = async () => {
let query = temp.find()
let res = [1,2,3]
await query.exec(function (err, users) {
if (!err) {
res = users
// console.log(res) // 这里可以打印出数据
}
})
// console.log(res) // 这里 res 为空,没有任何值
return res
}
app.js
const Koa = require('koa')
const app = new Koa()
const router = require('./router/router.js')
const mongoose = require('mongoose')
mongoose.connect('mongodb://localhost/db1')
app
.use(router.home.routes())
.use(router.home.allowedMethods())
app.listen(3000, () => {
console.log('running')
})
router.js
const Router = require('koa-router')
const router = new Router()
const controller = require('../controller/user.js')
module.exports = {
home: router.get('/', controller.getAllUsers)
}
user.js
const userHelper = require('../dbhelp/findAllUsers.js')
module.exports = {
getAllUsers: async (ctx, next) => {
ctx.body = await userHelper.findAllUsers()
}
}
5 回复
/**
await query.exec(function (err, users) {
if (!err) {
res = users
// console.log(res) // 这里可以打印出数据
}
})
*/
// 改为
res = await query.exec();
// console.log(res) // 这里 res 为空,没有任何值
return res
你的model都没指定哪个集合
From Noder
query.exec异步回调的问题。 自豪地采用 CNodeJS ionic
额, 用async/await为什么还要用回调。
try { const res = await query.exec(); return res; } catch (err) { err处理 }