AngularJS+Satellizer+Node.js+MongoDB->Instagram-11

Build an Instagram clone with AngularJS, Satellizer, Node.js and MongoDB

11.数据库和用户模型

很快你就会看到,我们用 Mongoose 包来连接 MongoDB。直接把 Mongo URI 写到 app.js 中实在太丑了,我们把它放到 config.js。那么,在 server 目录下新建一个文件 config.js,把下面代码贴进去:

<!-- lang: js -->
module.exports = {
  db: process.env.db || 'localhost',
  tokenSecret: process.env.tokenSecret || 'pick a hard to guess string'

};

tokenSecret 用来处理下一节我们要拿到的 JSON Web Token authentication.

注意: 如果你不熟悉 Node.js 的 exportsmodule.exports 的话,请自行查阅this article.

回到 app.js ,通过下面这行代码导入 config 文件:

<!-- lang: js -->
var config = require('./config');

然后,我们创建一个新的 User 模型,并且连接到 MongoDB 数据库。在导入之后,把这些代码加进去:

<!-- lang: js -->
var User = mongoose.model('User', new mongoose.Schema({
  instagramId: { type: String, index: true },
  email: { type: String, unique: true, lowercase: true },
  password: { type: String, select: false },
  username: String,
  fullName: String,
  picture: String,
  accessToken: String
}));

mongoose.connect(config.db);

我已经在 How To Implement Password Reset In Node.js 和 Create a TV Show Tracker using AngularJS, Node.js and MongoDB 中讲 Mongoose 讲得够多了,所以在这里我就不重复自己了。

有一件事情是我要再提一次的,那就是密码字段的 select 属性。它告诉 Mongoose 不能取到密码字段,除非明确的通过 “+password”选项来重写状态,之后我们会讲到。不这样做的话,之后我们把用户实例返回给 Angular 之前,将要手工的删除密码字段。

https://hackhands.com/wp-content/uploads/2014/10/Screenshot-2014-10-28-23.08.54.png

如果你还没有打开 MongoDB 就重启 Express 服务的话,你会看到如下的错误:

https://hackhands.com/wp-content/uploads/2014/10/Screenshot-2014-10-28-23.09.58.png

注意: 如果你的 MongoDB 是在 Mac 或者 Linux 上,通过包管理器安装的,那么你必须通过执行 mongod 命令启动。如果是在 Windows 那么你需要在下载安装好 MongoDB 打开 mongod.exe

以上就是这章的所有内容。下一节我们将会在 Express 中实现两个辅助功能: isAuthenticated() 中间件,用来检查用户在访问 priveleged 路由前是否已被授权。createToken() 用来产生一个 JSON Web Token。

你可能感兴趣的:(AngularJS,express,nodejs,node,node.js,OAuth,oauth2,Satellizer,OAuthn)