mongoose不创build文件

我在ubuntu 16.04上使用了nodejs(6.2.1)和mongoose(4.4.16)和mongodb(2.1.21),并创build了一个registry单,但是当我提交mongoose时,并没有创build这个doucment,并且请求继续等待。 请帮我解决这个问题。 下面是文件结构

意见是在app-server文件夹,这是完美的,所以我不包括该结构

app-api ├── controllers │  └── users.js ├── models │  ├── db.js │  └── users.js └── routes └── index.js 

路线/ index.js

 var express = require('express'); var router = express.Router(); var ctrlUsers = require('../controllers/users'); router.get('/user', ctrlUsers.userInfo); router.post('/signup', ctrlUsers.userSignup); module.exports = router; 

车型/ db.js

 var mongoose = require( 'mongoose' ); var mongoURI = 'mongodb://localhost/local'; var mongoDB = mongoose.createConnection(mongoURI); mongoDB.on('connected', function (){ // console.log("enviorment:" + process.env.NODE_ENV); // console.log("mongolab:" + process.env.MONGOLAB_URI); console.log('mongoose connected to ' + mongoURI); }); mongoDB.on('disconnected', function (){ console.log('mongoose disconnected '); }); require('./users'); 

车型/ users.js

 var mongoose = require('mongoose'); var Schema = mongoose.Schema; var userSchema = new Schema({ username: {type: String, required: true, unique: true}, password: {type: String, required: true}, email: {type: String, required: true}, gender: {type: Boolean, "default": "m"}, createdOn: {type: Date, "default": Date.now} }); module.exports = mongoose.model('User', userSchema); 

控制器/ users.js

 var mongoose = require( 'mongoose' ); var User = mongoose.model('User'); module.exports.userInfo = function(req,res) { res.render('signup', { title: 'User List' }); }; module.exports.userSignup = function(req,res) { console.log(req.body); console.log(User); if (req.method == 'POST') { // console.log("[200] " + req.method + " to " + req.url); User.create({ username: req.body.username, password: req.body.password, email: req.body.email },function (err, user) { console.log(err); if(err) handleError(err); console.log('User saved successfully!'); }); } }; 

这里console.log(req.body); 通过表单发送

{ username: 'alpha', email: 'beta@gamma.com', password: 'delta' }

console.log(User)输出

 { [Function: model] hooks: Kareem { _pres: {}, _posts: {} }, base: Mongoose { connections: [ [Object], [Object] ], plugins: [], models: { User: [Circular], Location: [Object] }, modelSchemas: { User: [Object], Location: [Object] }, options: { pluralization: true } }, modelName: 'User', model: [Function: model], db: NativeConnection { base: Mongoose { connections: [Object], plugins: [], models: [Object], modelSchemas: [Object], options: [Object] }, collections: { users: [Object], locations: [Object] }, models: { User: [Circular], Location: [Object] }, config: { autoIndex: true }, replica: false, hosts: null, host: null, port: null, user: null, pass: null, name: null, options: null, otherDbs: [], _readyState: 0, _closeCalled: false, _hasOpened: false, _listening: false }, discriminators: undefined, schema: Schema { paths: { username: [Object], password: [Object], email: [Object], gender: [Object], createdOn: [Object], _id: [Object], __v: [Object] }, subpaths: {}, virtuals: { id: [Object] }, singleNestedPaths: {}, nested: {}, inherits: {}, callQueue: [ [Object], [Object] ], _indexes: [], methods: {}, statics: {}, tree: { username: [Object], password: [Object], email: [Object], gender: [Object], createdOn: [Object], _id: [Object], id: [Object], __v: [Function: Number] }, _requiredpaths: undefined, discriminatorMapping: undefined, _indexedpaths: undefined, s: { hooks: [Object], queryHooks: [Object] }, options: { typeKey: 'type', id: true, noVirtualId: false, _id: true, noId: false, validateBeforeSave: true, read: null, shardKey: null, autoIndex: null, minimize: true, discriminatorKey: '__t', versionKey: '__v', capped: false, bufferCommands: true, strict: true, pluralization: true } }, collection: NativeCollection { collection: null, opts: { bufferCommands: true, capped: false }, name: 'users', collectionName: 'users', conn: NativeConnection { base: [Object], collections: [Object], models: [Object], config: [Object], replica: false, hosts: null, host: null, port: null, user: null, pass: null, name: null, options: null, otherDbs: [], _readyState: 0, _closeCalled: false, _hasOpened: false, _listening: false }, queue: [ [Object] ], buffer: true, emitter: EventEmitter { domain: null, _events: {}, _eventsCount: 0, _maxListeners: undefined } } } 

当我在terminal上运行mongo ,并尝试use local show collections不给任何输出

最后从mongoose documentation得到解决scheme

重要! 如果您使用mongoose.createConnection()打开单独的连接,但是尝试通过mongoose.model('ModelName')访问模型,它将无法按预期工作,因为它没有连接到活动数据库连接。 在这种情况下,通过您创build的连接访问您的模型:

所以现在有两种方法

首先:更改db.js中的连接string

var mongoDB = mongoose.createConnection(mongoURI);

  mongoose.connect(mongoURI); var mongoDB = mongoose.connection; 

其次:更改在controllers / users.js中使用.model()

 var mongoose = require( 'mongoose' ); var conn = mongoose.createConnection('mongodb://localhost/loc8r'); var User = conn.model('User');