【问题标题】:Mongoose not displaying data from mongoDBMongoose 不显示来自 mongoDB 的数据
【发布时间】:2019-02-20 12:42:10
【问题描述】:

我在终端中创建了一个名为 userInfo 的 mongodb,集合名称为“info”,我在模型/user_info.js 中创建了一个模式。我根本没有从数据库中获取任何值。 我的 userInfo db 有 name,studentId,dept

我的视图引擎是jade/pug,我正在尝试迭代并显示数据库中的值。我没有收到错误,但它没有显示值。感谢您的帮助!

app.js

const express= require('express');
const path = require('path')
const mongoose = require('mongoose')
const bodyParser = require('body-parser')

mongoose.connect('mongodb://localhost/userInfo')
let db = mongoose.connection;


db.on('error',(error) => console.log(error));
db.once('open',() => console.log('Connected to Mongodb'))

const app = express()

// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))

// parse application/json
app.use(bodyParser.json())


let UserInfo = require('./models/user_info')

app.set('views',path.join(__dirname,'views'))
app.set('view engine','pug')

app.get('/',(req,res) => {
    UserInfo.find({},function(err,info){
        if(err){
            console.log(err);
        }else{
            res.render('tabel',{
                title:'user report',
                info:info
            });
        }
    })
})

user_info.js //shema

let mongoose = require('mongoose');


//Userinfo Schema
let userInfoSchema = mongoose.Schema({
    name:{
        type:String,
        required:true
    },
    studentID:{
        type:String,
        required:true
    },
    dept:{
        type:String,
        required:true
    }
});

let UserInfo = module.exports = mongoose.model('UserInfo',userInfoSchema);

【问题讨论】:

  • 只是为了验证,您是否尝试在致电res.render() 之前记录信息?它打印什么?
  • 打印空列表
  • 好的,要尝试的另一件事是从 user_info.js 中的 module.exports 之前删除 let UserInfo =,它不需要存在。
  • 仍然返回空列表
  • Mongoose -- Force collection name 的可能副本 这说明了如何将集合与您的模型相关联。

标签: node.js mongodb express mongoose


【解决方案1】:

在您的模型中,您指向集合名称 UserInfo,但您的数据在“信息”集合中。

因此,请在模型中明确更改集合名称。

你的user_info.js (schema)应该是,

let mongoose = require('mongoose');
let userInfoSchema = mongoose.Schema({
    name:{
        type:String,
        required:true
    },
    studentID:{
        type:String,
        required:true
    },
    dept:{
        type:String,
        required:true
    }
});

let UserInfo = module.exports = mongoose.model('UserInfo', userInfoSchema, 'info');

在最后一行,我传递了第三个参数,将集合名称指示为info。

【讨论】:

    猜你喜欢
    • 2018-03-15
    • 1970-01-01
    • 2016-09-08
    • 2017-07-24
    • 1970-01-01
    • 2019-10-12
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    相关资源
    最近更新 更多