You*_*Tan 15 schema mongoose mongodb node.js express
我是node.js的新手,我在访问当多个mongoose模式被声明时遇到问题.
//schema.js在模型中
var mongoose = require('mongoose');
var Schema = mongoose.Schema
, ObjectId = Schema.ObjectId;
//User Schema
var userSchema = new Schema({
id: ObjectId,
firstname: {type: String, require: true},
lastname: {type: String, require: true},
username: {type: String, unique: true, require: true},
password: {type: String, require: true},
role: {type: [String], require: true}
})
var User = mongoose.model('User', userSchema);
module.exports = User;
//Question Schema
var qnSchema = new Schema({
id: ObjectId,
question: {type: String, require: true},
module_id: {type: ObjectId, ref: 'Module'}
})
var Question = mongoose.model('Question', qnSchema);
module.exports = Question;
//Answer Schema
var ansSchema = new Schema({
id: ObjectId,
answer: String,
question: {type: ObjectId, ref: 'Question'}
})
var Answer = mongoose.model('Answer', ansSchema);
module.exports = Answer;
//Module Schema
var modSchema = new Schema({
id: ObjectId,
name: {type: String, require: true}
})
var Module = mongoose.model('Module', modSchema);
module.exports = Module;
//Role Schema
var roleSchema = new Schema({
id: ObjectId,
role: {type: String, require: true}
})
var Role = mongoose.model('Role', roleSchema);
module.exports = Role;
Run Code Online (Sandbox Code Playgroud)
//index.js在控制器中
var mongoose = require('mongoose');
var User = require('../models/schema');
var db = mongoose.connect('mongodb://localhost/damai');
module.exports = function(app) {
app.get('/', function(req, res) {
if (typeof req.session.userid == 'undefined') {
res.render('login', { title: app.get('title') });
} else {
res.render('index', { title: app.get('title') });
}
});
app.post('/login', function(req, res) {
passwordVerification(req, res);
});
}
function passwordVerification(req, res)
{
var userid = req.param('userid');
var password = req.param('password');
User.findOne({'username': userid},{'password': 1}, function(err, cb)
{
console.log(cb);
if(cb!= null)
{
if (password == cb.password) {
req.session.userid = userid;
res.render('index', { title: app.get('title'), 'userid': userid });
} else {
res.render('login', { title: app.get('title'), error: 'Invalid login'});
}
}
else
{
res.render('login', { title: app.get('title'), error: 'Invalid login'});
}
});
}
Run Code Online (Sandbox Code Playgroud)
当我在schema.js中只有"User Schema"时,来自index.js的方法"passwordVerification()"的数据库调用将返回从数据库中检索的相关密码.但是,当我开始在schema.js中添加其他模式(如"Question Schema")时,方法"passwordVerification()"将始终返回null.
Joh*_*yHK 36
从schema.js中的单个文件导出多个模型时,需要为每个导出的模型提供自己的exports字段名称.
例如,将module.exports = ...schema.js中的多行替换为导出所有模型的文件末尾的此代码:
module.exports = {
User: User,
Question: Question,
Answer: Answer,
Module: Module,
Role: Role
};
Run Code Online (Sandbox Code Playgroud)
然后在index.js中你可以像这样访问模型:
var models = require('./schema');
...
models.User.findOne(...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10823 次 |
| 最近记录: |