无法获得mongoose来创建新的集合

时间:2016-09-27 15:10:41

标签: node.js mongodb mongoose

刚刚掌握MongoDB和Mongoose,并在第一道障碍中挣扎!

我有一个名为'Academy'的数据库,并定义了一个名为'Level'的模式。我的理解是,当我启动我的Express服务器时,应该自动创建由Schema模型定义的集合,但由于某种原因,似乎没有发生任何事情。当我在Mongo shell中转到数据库并输入show collections时,不会显示任何内容。

谁能解释我哪里出错了?我是否需要输入数据以及定义模式 - 我原本希望暂时创建一个空集合并稍后填充数据。

谢谢!

级别架构定义:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const LevelSchema = new Schema({
    level: Number, // e.g. 3
    framework: String, // e.g. England/Scotland
    sizes: [{
        name: String, // Award/Certificate/Diploma
        credits: Number // e.g. 11, 24, 48 etc.
    }],
    delivery: [], // Workshop/Distance
    venue: [], // Leeds/London/Edinburgh
    courseRef: String, // 600/7760/8
    units: [{
        number: String, // e.g. 01, 05 etc.
        name: String, // UnitName
        mandatory: [] // e.g. Award/Certificate/Diploma
    }]

});

const ModelClass = mongoose.model('Level', LevelSchema)

module.exports = ModelClass;

server.js - 这使用http-proxy为使用Webpack进行开发设置代理服务器 - 如果您有兴趣,请参阅this article以获取更多信息。我不认为这就是我遇到麻烦的原因,但为了以防万一,我把它全部留在那里。

const express = require('express');
const path = require('path');
const httpProxy = require('http-proxy');
const mongoose = require('mongoose');


//DB SETUP

const db = mongoose.connection;
db.on('error', console.error);
db.once('open', function(){
    const Levels = require('./data/models/Level');
})
mongoose.connect('mongodb://localhost/Academy');


// SERVER SETUP
const proxy = httpProxy.createProxyServer();

const app = express();

var isProduction = process.env.NODE_ENV === 'production';
var port = isProduction ? process.env.PORT : 3000;
var publicPath = path.resolve(__dirname, 'public');

app.use(express.static(publicPath));


if(!isProduction){
    var bundle = require('./server/bundle.js');
    bundle();
    app.all('/build/*', function(req, res){
        proxy.web(req,res, {
            target: 'http://localhost:8080'
        });
    });
}

proxy.on('error', function(e){
    console.log('Could not connect to proxy, please try again...');
})

app.listen(port, function(){
    console.log('Server running on port ' + port);
});

1 个答案:

答案 0 :(得分:1)

我不认为你做错了什么。只要您对Level模型(查找,插入等)采取行动,就应该自动创建集合。