微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

User.find({}) 没有在 Node.js 中正确返回控制台

如何解决User.find({}) 没有在 Node.js 中正确返回控制台

总的来说,我对 mongodb 和后端开发还很陌生,我在尝试查询 mongodb 时遇到了困难。我只是想创建一个路由,该路由返回“users”数据库中的所有用户,这些用户的项目符号属性大于 0。我将在下面发布我的用户模型。

现在在我的 getUsers 控制器中,我只是尝试使用 console.log 记录结果,但没有成功。最终我想要实现的是这个 getUsers 路由将由我的 /dashboard 路由在我的 indexRouter.js 中触发。然后我需要将结果传递给客户端。同样,我对表达和后端开发还很陌生,所以任何帮助都会很棒!

除了我在堆栈上发布的文件之外,我还包括任何服务器和/或配置相关问题的 github 存储库。我的堆栈示例中的 .js 文件比我的 github 存储库文件更新,但所有其他文件应该相同。

Full Github Repo

usermodel.js

const mongoose = require('mongoose');

const UserSchema = new mongoose.Schema({
  name: {
    type: String,required: true
  },email: {
    type: String,password: {
    type: String,date: {
    type: Date,default: Date.Now
  },bullets: {
    type: Number,default: 0
  }
});

const User = mongoose.model('User',UserSchema);

module.exports = User;

userController.js(我没有包含所有控制器,只是我现在正在尝试使用的控制器)

const User = require('./usermodel');
const passport = require('passport');
const bcrypt = require('bcryptjs');


exports.getUsers = (req,res,next) => {
console.log(User.find({ bullets: { $gt: 0 } }))
}

userRoutes.js

const express = require('express');
const router = express.Router();
const controller = require('./userController');

router.route('/login')
  .get(controller.getLogin)
  .post(controller.postLogin)

router.route('/register')
  .get(controller.getRegister)
  .post(controller.postRegister)

router.route('/logout')
  .get(controller.getlogout)

router.route('/buyBullet')
  .get(controller.buyBullet);

router.route('getUsers')
  .get(controller.getUsers);




module.exports = router;

indexRouter.js

const express = require('express');
const router = express.Router();
const { ensureAuthenticated } = require('../../config/auth');


router.get('/dashboard',ensureAuthenticated,(req,next) => {
  res.render('dashboard',{
    name: req.user.name
  });
});

module.exports = router;

解决方法

原因是因为 Model.find() 是一个异步函数,所以当您 console.log 函数调用时,它会记录调用返回的承诺。如果您想将其用作中间件,我建议使 controller.getUsers 函数异步并等待 Model.find() 调用

userController.js:

exports.getUsers = async (req,res,next) => {
    console.log(await User.find({ bullets: { $gt: 0 } }))
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。