Mongoose不显示来自mongoDB的数据

问题描述 投票:0回答:1

我在终端创建了一个名为userInfo的mongodb,其集合名称为“info”,我在models / user_info.js中创建了一个模式。我根本没有从数据库中获取任何值。我的userInfo数据库有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 // schema

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);
node.js mongodb express mongoose
1个回答
0
投票

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

因此,在模型中显式更改集合名称。

你的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

© www.soinside.com 2019 - 2024. All rights reserved.