Page 122 - Node.js开发指南
P. 122
5.6 用户注册和登录 115
User.get 的功能是通过用户名获取已知用户,在这里我们判断用户名是否已经存 1
在。User.save 可以将用户对象的修改写入数据库。
通过 req.session.user = newUser 向会话对象写入了当前用户的信息,在后面
我们会通过它判断用户是否已经登录。
3. 用户模型 2
在前面的代码中,我们直接使用了 User 对象。User 是一个描述数据的对象,即 MVC
架构中的模型。前面我们使用了许多视图和控制器,这是第一次接触到模型。与视图和控制
器不同,模型是真正与数据打交道的工具,没有模型,网站就只是一个外壳,不能发挥真实
3
的作用,因此它是框架中最根本的部分。现在就让我们来实现 User 模型吧。
在 models 目录中创建 user.js 的文件,内容如下:
var mongodb = require('./db');
4
function User(user) {
this.name = user.name;
this.password = user.password;
};
module.exports = User; 5
User.prototype.save = function save(callback) {
// 存入 Mongodb 的文档
var user = {
6
name: this.name,
password: this.password,
};
mongodb.open(function(err, db) {
if (err) {
return callback(err); 7
}
// 读取 users 集合
db.collection('users', function(err, collection) {
if (err) {
8
mongodb.close();
return callback(err);
}
// 为 name 属性添加索引
collection.ensureIndex('name', {unique: true});
// 写入 user 文档 9
collection.insert(user, {safe: true}, function(err, user) {
mongodb.close();
callback(err, user);
});
10
});