今天花了多少时间在编程的学习上: 3
今天完成的事情:
- 按照新的代码再过了一遍教程, 大概明白了每一步要做点什么
- 自己在不怎么看源码的情况下模仿写了一个类似的脚本, 简单跑起来了明天再完善一下
明天计划的事情:
- 列表页删除和列表页更新功能的添加
遇到的问题:
- 什么时候用get什么时候用Post
- id值是从哪里来的
- movie对象中的_id字段究竟是怎么生成的
收获:
过程中用到的一些库的作用
- __underscore, 用于对于已经有的代码的更新, 如下
movie.findById(id, function (err, movie) {
if (err) {
console.log(err);
}
_movie = _underscore.extend(movie, movieObj); // 用新对象里的字段替换老的字段
_movie.save(function (err, movie) {
if (err) {
console.log(err);
}
res.redirect('/movie/' + movie._id);
})
})
- fetch究竟是用来干嘛的
- 调出数据库里面所有的数据
- 按照更新时间去排序
- 执行回调函数
- 在mongoose里面通过模型(model导出的为模型,最后在路由界面创造的document导出的才为真正可用的文件。
movie = require('./models/movie.js');
即app.js里面的这一条命令, 当然在具体的路由里面还要通过movies = movies引用他 -
var id = req.params.id;
获得url里面的id值,需要xxx库的支持 - res.redirect(url) 页面跳转
var id = req.body.movie._id;
var movieObj = req.body.movie;
var _movie = null;
//通过req.body.对象名.字段, 你可以引用到对象里面的字段
-
id !== 'undefined'
判断id是否等于undefined一定要加引号, 不然会出错 - bodyParser.urlencoded模块用于解析req.body的数据,解析成功后覆盖原来的req.body,如果解析失败则为 {} 。该模块有一个属性extended,官方介绍如下:
The extended option allows to choose between parsing the URL-encoded data with the querystring library (when false) or the qs library (when true). Defaults to true, but using the default has been deprecated.
大致的意思就是:extended选项允许配置使用querystring(false)或qs(true)来解析数据,默认值是true,但这已经是不被赞成的了。