1

私はmongodbベースの新しいユーザーをコントローラーファイルに保存しようとしています:

var mongoose = require('mongoose');
var UserModel = mongoose.model('User');

// signup
exports.create = function (req, res) {

    console.log(req.body);

    var user = new UserModel({
        username: req.body.username,
        password: req.body.password,
        email: req.body.email
    });

    user.save(function (err) {
        if (!err) {
            return console.log("created");
        }
        else {
            return console.log(err);
        }
    });
}

デバッグモードでは、user.save()がエラーなしで実行されないことがわかります...

ユーザー名/パスワード/メールフィールドで正しい値を取得しているので、理由はわかりません。

ここに私のモデルファイル:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var objectId = Schema.ObjectId;

var userSchema = mongoose.Schema({
    username: String,
    password: String,
    email: String
});

var userModel = mongoose.model('User', userSchema);

編集 :

私のapp.jsでは、mongodbに接続しています:

 mongoose.connect('mongodb://localhost/mydb', function(err){
        if(err) {
            console.log(err);
        }
    });

    var  userModel = require('./models/user'),
        userController = require('./controllers/users');
4

2 に答える 2

1

テストするために、すべて(コントローラー+モデル)を1つのファイルにグループ化しました:

var express = require('express')
  , routes  = require('./routes')
  , userRoute    = require('./routes/user')
  , http    = require('http')
  , path    = require('path')
  , io      = require('socket.io')
  , mongoose = require('mongoose');

var app = express();

app.configure(function(){
  app.set('port', process.env.PORT || 8080);
  app.set('views', __dirname + '/views');
  app.set('view engine', 'ejs');
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(require('stylus').middleware(__dirname + '/public'));
  app.use(express.static(path.join(__dirname, 'public')));
});

app.configure('development', function(){
  app.use(express.errorHandler());
});

mongoose.connect('mongodb://127.0.0.1/mydb', function(err){
    if(err) {
        console.log(err);
    }
    else {
        console.log("Connected to mongo DB")
    }
});

/*var userModel = require('./models/user'),
    tchatMessageModel = require('./models/tchatMessage'),
    userController = require('./controllers/users'),
    tchatMessageController = require('./controllers/tchatMessages');       */

app.get('/', routes.index);
app.get('/signup', userRoute.signup);
app.get('/signin', userRoute.signin);
//app.post('/signup', userController.create);
//app.get('/users', userRoute.list);

var Schema = mongoose.Schema;
var userSchema = Schema({
    username: String,
    password: String,
    email: String
});
var UserModel = mongoose.model('User', userSchema);
app.post('/signup', function (req, res) {

    console.log(req.body);

    var user = new UserModel({
     username: req.body.username,
     password: req.body.password,
     email: req.body.email
     });

    user.save(function (err) {
        if (!err) {
            return console.log("created");
        }
        else {
            return console.log(err);
        }
    });

});

var server = http.createServer(app);

server.listen(app.get('port'), function(){
    console.log("Express server listening on port " + app.get('port'));
});

そして、私は同じ問題を抱えています...わかりません。Express構成の問題でしょうか?

編集 :

で解決された問題:

app.js

mongoose.model("User", require("./models/user").userModel);

model.js

exports.userModel = userSchema;
于 2013-01-13T13:11:25.070 に答える
0

マングーススキーマを作成するときは、キーワード「new」を使用する必要があります。

var userSchema = new mongoose.Schema({
    /*...*/
});
于 2015-01-21T21:42:02.360 に答える