我正在编写我的第一个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);
});
});
加载外部文件时我做错了什么?还是错过了什么?
答案 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);
});
});