nodejs模板(模板引擎)
结构(html)结构 可以直接渲染数据 (jsp)
node模板引擎
jade
pug
ejs 没有破坏html结构
cnpm i ejs -S //安装步骤
app.set('views', './views')
app.set('view engine', 'ejs')
views
home.ejs
news.ejs // 将html后缀名改为ejs
路由中渲染
})
渲染数据
允许我们在 ejs (结构中)写js
赋值
<%= 变量 %>
<% 这⾥可以写任意的js %>
<%- richText %> 渲染富⽂本<%= %> 不会渲染富⽂本
<%- include('head') -%> 引⼊公共模板(公共⾸尾head公共模板名)
robot 3t 可视化操作mongodb
mongodb ⾮关系型数据
mysql/oracle 关系型数据库
数据库
数据库
collection 集合
document
key 字段
直接以 json格式存储
规范宽泛
mongodb
⾮关系型数据存储数据格式就是json  mongodb redis
关系型数据:mysql oracle
对⽐
关系型⾮关系型  json
数据库(database)(数据仓库)数据库(database)
表    (table)                        collection 集合  [{},{},{}]
⾏    row                            document ⽂档 json
列字段  col                          key
mongodb 原⽣sql 语句
show dbs  查看有哪些数据库
use 数据库切换到这个数据库
show collections 查看当前数据库下有哪些集合(前提你得先切换到⽬标数据库)
⼀下所有的操作都需要切换到⽬标数据库才能执⾏
db.集合名.drop()
以上命令都不重要(这些操作我们⼀般会在可视化软件中操作)
下⾯增删改查才是重点
robot 3T mongodb可视化
查看⽂档
最简单查看⽂档的⽅法就是find(),会检索集合中所有的⽂档结果
db.集合名.find()
要以格式化的⽅式显⽰结果,可以使⽤pretty()⽅法。
db.集合名.find().pretty()
1.固值寻
寻age集合⾥⾯所有含有属性值为wscats的⽂档结果,相当于where name = 'wscats'
db.age.find({name:"wscats"})
2.范值寻
操作 语法 ⽰例 等效语句
相等 {:} db.age.find({"name":"wscats"}).pretty() where name = ‘wscats’
⼩于 {:{KaTeX parse error: Expected 'EOF', got '}' at position 4: lt:}} `db.age.find(…lt:50}}).pretty()whe
re likes < 50 ⼩于等于 {: {$lte:}}db.age.find({“likes”:{KaTeX parse error: Expected 'EOF', got '}' at position 7: lte:50}}).pretty()` wh…gt:}}
db.age.find({"likes":{$gt:50}}).pretty() where likes > 50
⼤于等于 {:{KaTeX parse error: Expected 'EOF', got '}' at position 5: gte:}} `db.age.find(…gte:50}}).pretty()where likes >= 50 不等于{:{$ne:}}db.age.find({“likes”:{$ne:50}}).pretty()` where likes != 50
3.AND和OR寻
AND
在find()⽅法中,如果通过使⽤,将它们分开传递多个键,则mongodb将其视为AND条件。 以下是AND的基本语法
寻_id为1并且name为wscats的所有结果集
db.age.find(
{
$and:[
{"_id":1},{"name":"wscats"}
]
}
)
OR
在要根据OR条件查询⽂档,需要使⽤$or关键字。以下是OR条件的基本语法
寻name为corrine或者name为wscats的所有结果集
db.age.find(
{
$or:[
{"name":"corrine"},{“name“:"wscats"}
]
}
)
AND和OR等结合
相当于语句where title = "wscats" OR ( title = "corrine" AND _id < 5)
db.age.find({
$or:[{
"title":"wscats"
},{
$and:[{
"title":"corrine"
},{
"_id":{
$lte:5
}
}]
}]
})
插⼊⽂档
⽂档的数据结构和JSON基本⼀样。
所有存储在集合中的数据都是BSON格式。
BSON是⼀种类json的⼀种⼆进制形式的存储格式,简称Binary JSON。
要将数据插⼊到mongodb集合中,需要使⽤mongodb的insert()或save()⽅法。db.集合名.insert(document)
⽐如我们可以插⼊以下数据
db.wscats.insert({
title:'MongoDB Tutorials',
description:'node_tutorials',
by:'Oaoafly',
url:'github/Wscats/node-tutorial',
tags:['wscat','MongoDB','database','NoSQL','node'],
num:100,
})
也可以⽀持插⼊多个,注意传⼊的是数组形式
db.wscats.insert([{
_id:100,
title: ‘Hello’
},{
_id:101,
title: ‘World’
}])
在插⼊的⽂档中,如果不指定_id参数,那么mongodb会为此⽂档分配⼀个唯⼀的ObjectId
要插⼊⽂档,也可以使⽤db.post.save(document)。如果不在⽂档中指定_id,那么save()⽅法将与insert()⽅法⼀样⾃动分配ID的值。如果指定_id,则将以save()⽅法的形式替换包含**_id**的⽂档的全部数据。
db.wscats.save({
_id:111,
title:'Oaoafly Wscats',
})
更新⽂档
1.update()⽅法
寻第⼀条title为wscats的值,并且更新值title为corrine和age为12
db.age.update({
'title':'wscats'
},{
$set:{
'title':'corrine',
'age':12
}
})
默认情况下,mongodb只会更新⼀个⽂档。要更新多个⽂档,需要将参数multi设置为true,还可以配合find⽅法⾥⾯的各种复杂条件判断来筛选结果,然后更新多个⽂档
寻所有title为wscats的值,并且更新值title为corrine和age为12
db.age.update({
'title':'wscats'
},{
$set:{
'title':'corrine',
'age':12
}nodejs工作流引擎开源
},{
multi:true
})
2.save()⽅法
将_id主键为3的⽂档,覆盖新的值,注意_id为必传
db.age.save({
'_id':3,
'title': 'wscats'
})
删除⽂档
删除主键_id为3的⽂档,默认是删除多条
ve({
'_id':3
})
建议在执⾏remove()函数前先执⾏find()命令来判断执⾏的条件是否正确
如果你只想删除第⼀条到的记录可以设置justOne为1,如下所⽰
ve({...},1)
全部删除
ve({})
Limit与Skip⽅法 (结合find⽅法使⽤)
Limit
如果你需要在mongodb中读取指定数量的数据记录,可以使⽤mongodb的Limit⽅法,limit()⽅法接受⼀个数字参数,该参数指定从mongodb中读取的记录条数。
db.age.find().limit(数量)
Skip
我们除了可以使⽤limit()⽅法来读取指定数量的数据外,还可以使⽤skip()⽅法来跳过指定数量的数据,skip⽅法同样接受⼀个数字参数作为跳过的记录条数。
db.age.find().limit(数量).skip(数量)
//skip()⽅法默认值为0
current 哪⼀页当前页
pageSize ⼀页多少条
10条
0101
10102
20103
db.stu.find().skip((current-1)*pageSize).limit(pageSize)
所以我们在实现分页的时候就可以⽤limit来限制每页多少条数据(⼀般固定⼀个值),⽤skip来决定显⽰第⼏页(⼀个有规律变动的值)
排序
在mongodb中使⽤使⽤sort()⽅法对数据进⾏排序,sort()⽅法可以通过参数指定排序的字段,并使⽤1和-1来指定排序的⽅式,其中1为升序排列,⽽-1是⽤于降序排列。
1 升序排列
-1 降序排列
db.集合名.find().sort({键值(属性值):1})
把age集合表重新根据_id主键进⾏降序排列
db.age.find().sort({
"_id":-1
})
上传图⽚功能
multer中间件实现图⽚上传

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。