文档章节

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

开源中国匿名会员
 开源中国匿名会员
发布于 2015/02/01 15:52
字数 521
阅读 69
收藏 0

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.jsCreate 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。

© 著作权归作者所有

开源中国匿名会员
粉丝 78
博文 104
码字总数 113453
作品 2
徐汇
技术主管
私信 提问
AngularJS+Satellizer+Node.js+MongoDB->Instagram-20

[Build an Instagram clone with AngularJS, Satellizer, Node.js and MongoDB][1] 20.部署 在 instagrame 目录下创建一个新的文件 .gitignore,把 node_modules 加到它里面。你可以直接用命......

开源中国匿名会员
2015/02/02
0
0
AngularJS+Satellizer+Node.js+MongoDB->Instagram-21

[Build an Instagram clone with AngularJS, Satellizer, Node.js and MongoDB][1] 21.总结 完结撒花!这是我那些年写过的最长的贴了。搞笑的是,我在 [TV Show Tracker blog post][2] 里面也...

开源中国匿名会员
2015/02/02
0
0
insstar:免翻墙免APP让你刷上Instagram

图源来自互联网 So 教你免翻墙免APP浏览Instagram 网址:http://www.insstar.cn/ 博主weibo:@Insstar Insstar是调用Instagram接口, 精选Instagram优质内容的一个网站;理论上能够访问Insta...

chensir740
2017/12/21
0
0
听老板的还是看数据?Facebook 屡次拆分产品的背后,即便扎克伯格也要妥协

摘要 在 Facebook 内部,单纯通过产品逻辑的「哲学思考」是不被提倡的,即便这样的决定来自于扎克伯格。 Instagram 一共有 4 款应用:Instagram、Boomerang、Layout 和 Hyperlapse。 图片来源...

宋德
2017/12/12
0
0
20 个看起来很棒的 Web UI 工具包

程序员们比设计师更需要这些 UI 方面的内容: 1. Mini Reminders Mini Reminders 2. Transluscent UI elements Transluscent UI elements 3. Clear Login Window Template Clear Login Windo......

oschina
2013/09/08
13.5K
15

没有更多内容

加载失败,请刷新页面

加载更多

【JavaScript】callee 与 caller

callee callee是函数参数arguments对象的一个属性,它指向参数arguments对象所在的函数自身。 function foo (x) {console.log(arguments.callee);return x;}foo(); 从控制台中可以看...

小草先森
28分钟前
2
0
全面剖析 Knative Eventing 0.6 版本新特性

摘要: Knative Eventing 0.6 版本已经于5月15号正式发布。相比于0.5版本,此次发布包含了一些重要特性及更新。针对这些新特性以及更新,我们如何快速、精准的定位主要技术点。本篇文章针对这...

阿里云云栖社区
30分钟前
9
0
ffmpeg常用命令

1.合并两个或多个视频文件 将a.flv b.flv合并为c.flv 编辑文件flvs.txt file 'a.flv'file 'b.flv' #ffmpeg -f concat -i flvs.txt -c copy c.flv...

硅谷课堂
31分钟前
1
0
MySQL面试题--常见的四种隔离级别

什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个...

寰宇01
31分钟前
2
0
Docker 安装 reids

0、mac上安装docker brew cask install docker 1、查询reidis docker search redis 2、拉取redis最新版本(也可以拉取指定版本,如:docker pull redis:4.0) docker pull redis 3、查看镜像 ...

moon888
39分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部