当模型中的单独代码时,Nodejs未定义var

时间:2016-04-29 18:47:21

标签: node.js mongodb mongoose fs mongoose-schema

我正在编写我的第一个nodejs应用程序,当我将一段代码移动到外部js文件时,我收到错误。我试图移动的代码是一个mongodb架构声明:

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

//--------------------users ------------
var usersSchema = new Schema({
    email: String,
    name: String, 
    phoneNumber: String, 
    BirthDate: Date, 
    loginpwd:String
});

var UserModel = mongoose.model('users', usersSchema);

我使用文件系统模块加载外部文件:

fs.readdirSync(__dirname+'/models').forEach(function(filename){
    if (~filename.indexOf('.js')) 
        require(__dirname+'/models/'+ filename);
    console.log(filename+" added");
});

当我分离代码时,以下块不能正常工作,抛出一个未定义的UserModel"错误:

var userData = new UserModel({email : req.body.edtEmail,
                                        name: req.body.edtName,
                                        phoneNumber: req.body.edtPhoneNumber,
                                        BirthDate: req.body.edtBirthDate,
                                        loginpwd: req.body.edtSenha});
// save user data to database
userData.save(function(err, record){
   if(err) throw err;

    // session setting
    req.session.userEmail = req.body.edtEmail;
    req.session.name = req.body.edtName;
    req.session.phoneNumber = req.body.edtPhoneNumber;
    req.session.birthDate = req.body.edtBirthDate;
    req.session.userId = record._id;
    res.redirect('/dashboard');
});

以下代码适用于内联代码或" in file"代码:

app.get('/users/json', function(req, res){
    mongoose.model('users').find(function(err, users){
        res.send(users);
    });
 });

加载外部文件时我做错了什么?还是错过了什么?

2 个答案:

答案 0 :(得分:1)

nodeJs中有一个内置系统来加载文件。

我不确定你想做什么,但在nodejs你会做这样的事情

var UserModel = require('UserModel'); 
var bob = new UserModel({ .... 

在另一个文件中,您可以加载此

[x for x in myList if len(x) == 5 and x[3] == Status and x[2]>x[4]]

因此您可以使用UserModel。阅读有关要求的文件

答案 1 :(得分:0)

也可以使用:

模式文件中的

:(比如目录“ models / userModel.js ”)

...
mongoose.model('UserModel', usersSchema);

在您要使用的控制器或其他文件中:(比如目录“ controller / userController.js ”)

require('../models/userModel');// load user model
var mongoose = require('mongoose'),
    UserModel = mongoose.model('UserModel'),

var userData = new UserModel({email : req.body.edtEmail, //rest of code...});

userData.save(function(err, record){ //rest of code ...

可用于以下路线:(跟控制器一样)

app.get('/users/json', function(req, res){
    UserModel.find(function(err, users){
        res.send(users);
    });
 });