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
                       });
   117   118   119   120   121   122   123   124   125   126   127