koa 读取 mongodb 数据时遇到无法获取数据

发布于 2022-09-07 04:27:20 字数 1440 浏览 23 评论 0

问题

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()
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

简单 2022-09-14 04:27:20
await query.exec(function (err, users) {
        if (!err) {
            res = users
            // console.log(res) // 这里可以打印出数据
        }
    })

你这里要写成 同步方式 而不是 异步语法

软糯酥胸 2022-09-14 04:27:20
exports.findAllUsers = async () => {
    return await temp.find()
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文