最近在学习NodeJS,在网上一番搜索资料后,很多人都建议读《了不起的NodeJS》,于是就开始开始啃起来了。在一边读一边敲代码的的过程中发现书中有些示例中的代码存在书写或者框架的更新导致运行出错,花了不少时间学习框架的更新和库的使用方法,才让代码运行正常。下面就是有关MongoDB代码更正:
express实例创建
书上的写法
更新后的写法
中间件
书上的写法
由于新版的express中将原来自身的大部分中间件都移除了,所以需要额外安装并引用。
bodyParser.urlencoded中的extented设置选项是用来控制POST传递的值是放能被对象化,例如下面的jade模板中input信息
{ extended: true }: req.body 为 { user: { name: ‘123123’ } }
{ extended: false }: req.body 为 { ‘user[name]’: ‘12313’ }
Jade模板
Jade模板已经更名为Pug,但是仍然可以使用jade。
- doctype的变更: doctype 5 => doctype html
- 书中index模板中的block body下的代码应该缩进1234567891011//更正后extends layoutblock contentif (authenticated)p Welcome back, #{me.first}a(href="/logout") Logoutelsep Welcome new visitor!ulli: a(href="/login") Loginli: a(href="/signup") Signup
mongodb新建collection
|
|
这里 Collection 是 mongodb 的方法得用小写,另外在使用 mongodb 之前记得要先用 mongod 命令开启服务器
mongodb insert 后的回调使用
|
|
doc 变成了一个对象,拥有 result 和 ops 两个属性,我们需要的数据在 ops 里面
204页忘记传 next 了…
|
|
|
|
mongodb的_id查询
使用 mongodb 的 _id 进行查询,原文中的指代方法已经不能使用了。而 node 本身不提供生成 objectid 的方法这里需要依赖第三方工具
|
|
jade中全局变量 locals 的使用
|
|
这里 express 的定义方法更改了,另外使用 mongodb 查询的时候如果没有查找到并不会报错,而是在回调的 doc 设为 null。
|
|