三个部分
- Schema 模式
可以配置输入数据的类型,好比string,number等
- Model 编译模型
会对传入的Schema进行编译,生成一个构造函数
- Document 文档实例化
Model创建了构造函数,我们可以利用这个构造函数进行文档的实例化,可以对数据进行传入,删除,更新等
- 数据传入
sql.save((err)=>{}) // 使用**实例**save方法进行数据写入
await sql.save() // 利用koa2 中async/await
- 数据查询
查询方法有很多种,有批量也能单条
aqq.get((req,res)=>{
// 使用的是Sql构造函数上的方法,而不是实例后的方法
Sql.find({}) // 全部查询
// Sql.find(传入特定的key:value)就能完成特定对象的批量查询
})
- 数据删除
Sql.remove(key:value) // 传入特定的key:value
- 数据更新
Sql.update({查询},{更新参数}) //无回调
状态保持
利用session来实现(会话)
通过session可以知道用户的状态,也可以对用户状态进行变更,好比30分钟不购物就需要退出登录状态,等待用户再次输入等
还有就是浏览器通信一般用的是http协议,是一种无状态的请求,之间的有请求才连接,请求完成立刻断开连接,这就需要一个新的机制来保存状态也就是cookie(在用户端记录)和session(在服务器端记录)了
- 安装express-session模块
- 使用方法
var session = require('express-session')
app.use(session({
secret: 'dataSecret'
})
- 持久化
- cookie持久化
var cookieSession = require('cookie-session');app.use(cookieSession())
该方法就不用直接去设置了 - mongodb储存
- 内存储存
mongodb指令
use xx进行xx数据库
db.users.find({})
错误提示
- DeprecationWarning: Mongoose: mpromise (mongoose's default promise l ibrary) is deprecated, plug in your own promise library instead: http://mongoose js.com/docs/promises.html
- 就是要定义Promise才好使用
-
mongoose.Promise = global.Promise
加多这句即可
- 'Cast to ObjectId failed for value "" at path "_id" for
有以下原因
- _id时mongoose定义好的
- app.use(bodyParser.urlencoded({extended:true})) 需要拓展
- 准备传入新数据或者更新数据要对_id存在与否进行判断
typeof(id) !== 'undefined' && id !== ''
- 安装npm install bcrypt 后找不到这个module。
- npm install bcrypt-nodejs --save-dev 使用这个安装
- 更改依赖名为bcrypt-nodejs即可
- bCrypt.js:621 throw "No callback function was given."
- 调用了bcrypt.hash的方法,该方法有4个参数,(data, salt, progress, cb)
- progress 表示进展 一般不用,但是一定要填写null!!不然识别不到callback
- mogoose 中 model出来的新构造函数查询一个对值时,使用findOne即可,不要使用find({}),因为返回的值不一样,find返回一个数组,findOne返回一个对象
- pug编译中可以用a标签href跳转到特定的id标签
a(href = '#idname') // 注意加#号
#idname
....
这样就能跳转到idname下的div了
网友评论