今天的截图
![](https://images2018.cnblogs.com/blog/1175089/201804/1175089-20180428214418837-817840870.png)
![](https://images2018.cnblogs.com/blog/1175089/201804/1175089-20180428214424529-1177224267.png)
![](https://images2018.cnblogs.com/blog/1175089/201804/1175089-20180428214429293-902569125.png)
![](https://images2018.cnblogs.com/blog/1175089/201804/1175089-20180428214445738-2105552552.png)
![](https://images2018.cnblogs.com/blog/1175089/201804/1175089-20180428214451016-1216793354.png)
![](https://images2018.cnblogs.com/blog/1175089/201804/1175089-20180428214456808-1177618240.png)
![](https://images2018.cnblogs.com/blog/1175089/201804/1175089-20180428214502516-1548213496.png)
今天的笔记和心得
服务器上的东西都是要经过编译的,因为它都可以操作内存。而node.js执行也是有编译过程的,服务器上的东西怎么可能有脚本语言,他只不过是借助V8引擎 编译成C++的一些东西
mongodb中 createIndex("XX":1) 建立索引表后,他就会按照XX这个属性的正序设置。 这时你如果insert(XX:1). insert(XX:15) insert(XX:5) 插入数据库,那么它会按照正序寻找他们的指定位置,有序插入。 如果没有建立索引表的话看,那么它就照常(1),(15),(5)
重启node.js服务器后,session就掉了,说明什么。
session是存在客户端的,每个客户端的session只有一个
外键 是关系式数据库特有的
注意:后台处理分页 比较困难,所以建议交由前台用AJAX请求会更好 $.get("/getall?page=0",function(err,result){ } )
1.后台返回的json 只有k,y格式前台才能识别 。 所以数组格式的要转变成json格式 res.json({"r":result}); 这个result是个[{},{} ] 。 那么实际前台显示的 就是{"r":[{},{}] }
2.假如后台是 res.json(result); 那么前台会显示:[{},{},{}]
记住 :for循环里不能套异步的东西。因为会异步结束后 那个i 已经变了。 解决办法:方法1 用迭代器,方法2 异步变同步
如果Ajax 嵌套 ,那么最里层的Ajax必须设为同步
在用户评论中,根据拿到那个评论中的用户名,去查找到数据库的头像
中间件都可以有req,res,next
res.query 返回的是一个对象 {name:'chen',sex:'123'};
res.params["username"] 这个params原理是通过正则表达式: 识别的 。 app.use("/user/:username");
========================
mongoose : var db = mongoose.createConnection("mongodb:127.0.0.1:27017/node.js") 这句话指的是,我会给每一个用户访问的时候 ,都会创造一个连接请求。并不指的是 只创建一个连接
当这个用户 关闭浏览器时,它会自动关闭数据库连接。很智能
===============
var abc = new ({XXX}) ;
model.exports = abc ;
另一个JS中,
var abc= require("./aaa/abc.js");
===============
Schema是产生Moedl的一个必要条件
Schema翻译 是 结构
XX.save(function(){}) 是对象的方法 不是类的方法
类名.create({"name":小红}) --> 创建了一个对象 ,并能保存在mongodb中 (这个靠工厂模式去创建一个对象) 。就省掉了用一个对象.save(function(){})这个步骤
新的数据库存储方式: 只要你把这个对象创建出来了,那么这个对象就能直接储存在数据库了
记住:mongoose所有的操作都不是对数据看进行的。所有的操作都是对类,实例进行的。数据的持久化自动完成了
对于主文件app.js来说 ,它只关心引入模型。例如 就一句话 var Student = require("./models/Student.js")
记住:model.exports 和exports.XX 的区别就在 差一次 "."
router.js 这个页面不关心数据库,只关心对象