【发布时间】:2016-10-06 00:26:18
【问题描述】:
我在 ubuntu 16.04 上使用 nodejs (6.2.1) 和 mongoose(4.4.16) 和 mongodb(2.1.21) 并创建一个注册表单,但是当我提交 mongoose 时不会创建文档并请求继续等待。请帮助我解决问题。以下是文件结构
views 位于完美的 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;
models/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');
models/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 } } }
当我在终端上运行mongo 并尝试use local show collections 没有给出任何输出
【问题讨论】:
-
这是什么
models: { User: [Circular] ..} -
恕我直言
local不可复制docs.mongodb.com/manual/reference/local-database。从某种意义上说,您正在写入的数据库可能不是您在终端上引用的那个。 -
好的。我创建了 db
loc8r并将其更改为loc8r仍然是同样的问题 -
你得到了什么输出?
-
我已经在 Question 中粘贴了输出