zoukankan      html  css  js  c++  java
  • 九阴真经 第十五层--node.js 第4天

    mongoDB 数据库 入门

    今天笔记

    res.json() 相当于 res.send()发一个json数据
    $(字符串)  ==》 $()可以把字符串 转换成对象
    实现前后端合作 2 种方式
    1. (前台页面作为后台模板)从前端妹妹 拿来静态页面 和CSS文件,放的我后台的public中,将她的html改为ejs,然后在模板上相关位置填上用<%= %>, 然后再app.js上 用个app.use(express.static("./public")) 来提供静态服务 ,res.render("XX",{"name":陈,"sex":man}) ;  这样,后台就会像浏览器 直接发送 已经渲染好了的html页面
    ![](https://images2018.cnblogs.com/blog/1175089/201803/1175089-20180306104727703-2133852317.png)
    
    
    2.推荐!(后台根本不用介入前台工作,前台自己组装自己的页面) 前端妹妹 用它的angelerJS 什么之类的 ,在它的html页面上用她的前端模板,做好。 然后再它的html上用 $.get("/news",function(data,status){})  。直接他利用ajax可以向我后端发送请求,然后前端妹妹得到json 数据,然后她将数据和她的html模板绑定 ,。  此时,她将她写好了的html 和CSS给我后端,我只要负责提供静态服务就行了,因为,html的动态请求是在客户的浏览器,js自动填充而生成。
    
    json  :    [{"name":陈,"sex":"man"}]    
    jsonp(要靠它完成跨域)  : ([{"name":陈,"sex":"man"}] )
    
    ./  和 不加/  都是一样的  都是相对路径
    
    _dirname  是代表 node.js后台  当前这个js文件 的目录
    
    mongoDB开机:
    开一个CMD
    mongod --dbpath c:mongo
    
    如果直接mongod 是默认 c:datadb
    mongod 代表开机 ;  dbpath 代表数据库文档真实存放的位置
    .ns结尾的文件 就是数据库
    
    mongoDB使用:
    再开一个CMD,  输入
    mongo 
    
    collections 相当于表
    mongoimport --db XX --collenction XX --drop --file XXX.json
    
    mongodb-shell  3.0  官方文档 https://docs.mongodb.com/getting-started/shell/import-data/
    

    =====================================================
    官网:https://www.mongodb.com/
    手册:https://docs.mongodb.org/manual/ 或https://docs.mongodb.com/getting-started/shell/
    手册的mongodb shell 注意要 选择 3.0版本的 MONGODB MANUAL 3.0 (current) ,不然有的API找不到


    安装时,记住把那个mongodb-compass 取消勾掉 , 我当时是卡死在装这个的。 这个mongodb-compass是mongodb的可视化软件

    如果想使用数据库时可以可视化的话
    之前试过安装过,mongodbVUE ,发现现在它的版本已经跟不上mongo了,它软件里面的collection无法显示和打开。
    我们 安装mongodb-compass

    安装后:
    记得设置环境变量 (为了能再任意盘 使用到 这个mongo 或mongod的命令 ,而不必在别的盘总要打 ** C:Program FilesMongoDBServer3.6inmongo**)


    --dbpath就是选择数据库文档所在的文件夹。
    也就是说,mongoDB中,真的有物理文件,对应一个个数据库。U盘可以拷走。
    一定要保持,开机这个CMD不能动了,不能关,不能ctrl+c。 一旦这个cmd有问题了,数据库就自动关闭了。

    所以,应该再开一个cmd。输入

    那么,运行环境就是mongo语法了。

    列出所有数据库:
    	show dbs 
    
    使用某个数据库
    	use 数据库名字
    如果想新建数据库,也是use。use一个不存在的,就是新建。
    
    查看当前所在数据库
    	db
    
    

    插入数据:

    student就是所谓的集合。集合中存储着很多json。
    student是第一次使用,集合将自动创建。

    ==========================

    数据库使用

    要管理数据库,必须先开机,开机使用mongod --dbpath c:mongo(不一定是mongo文件夹,你可以新建别的空的文件夹)
    执行完上面,你会发现这个c:mongo 文件夹里 生成了好多东西
    管理数据库:mongo (一定要在新的cmd中输入)

    清屏:
    cls

    查看所有数据库列表
    show dbs

    使用数据库、创建数据库
    use itcast

    如果真的想把这个数据库创建成功,那么必须插入一个数据。
    数据库中不能直接插入数据,只能往集合(collections)中插入数据。不需要创建集合,只需要写点语法:
    db.student.insert({“name”:”xiaoming”});
    db.student 系统发现student是一个陌生的集合名字,所以就自动创建了集合。

    删除数据库,删除当前所在的数据库
    db.dropDatabase();

    插入数据

    查找数据


    假如 {"hobby":["打球","学习"]};
    db.student.find({"hobby":"打球"});

    假如{"score":{"shuxue":100,"语文":99}}
    db.student.find("score.shuxue":100);

    修改数据

    删除数据

    ===========================
    老牌数据库,都是结构型数据库,现在出了什么问题?
    比如,我们现在想往一个已经有1000条数据的数据库中增加一个字段“高中信息”。

    之前已经存在的数据,实际上不需要增加这个字段。因为这些用户已经填写完毕表单了,不需要再手机高中信息了。我们的意图就是在今后注册的用户,需要填写高中信息。但是,我们刚才说了,所谓的字段,是表的一个结构。所有的行都必须拥有,不能有的行有这个字段,有的行没有这个字段。
    可想而知,大数据时代,数据库中有100万条数据都算少的。我们如果要动字段,时间太长。
    所以,字段这个东西,太不灵活。

    数据不灵活。一个字段,需要是同样类型的数据。不能一行记录是文本,一行记录是数字。

    非结构型数据库NoSQL应运而生。
    NoSQL是个怪胎,无法挑战老牌数据库,但是在大数据时代有自己的意义。

    NoSQL

    非结构型数据库。没有行、列的概念。用JSON来存储数据。
    集合就相当于“表”,文档就相当于“行”。

    文档就是JSON,上下文语境中,也是JavaScript范畴,所以我们的数据库也是JS范畴的东西,JS全栈。

    因此,我们总结NoSQL数据库在以下的这几种情况下比较适用:1、数据模型比较简单;2、需要灵活性更强的IT系统;3、对数据库性能要求较高;4、不需要高度的数据一致性;5、对于给定key,比较容易映射复杂值的环境。

    适用场景

    我们看,有些系统,特别需要筛选。比如,筛选出所有女生大于20岁的。那么SQL型数据库,非常擅长!因为它有行、列的概念。
    但是,有些系统,真的不需要进行那么多的筛选,比如站内信。站内信只需要存储就好了。不需要筛选。那么NoSQL的。

    今天的笔记和心得

    res.json() 相当于 res.send()发一个json数据
    $(字符串)  ==》 $()可以把字符串 转换成对象
    实现前后端合作 2 种方式
    1. (前台页面作为后台模板)从前端妹妹 拿来静态页面 和CSS文件,放的我后台的public中,将她的html改为ejs,然后在模板上相关位置填上用<%= %>, 然后再app.js上 用个app.use(express.static("./public")) 来提供静态服务 ,res.render("XX",{"name":陈,"sex":man}) ;  这样,后台就会像浏览器 直接发送 已经渲染好了的html页面
    
    2.推荐!(后台根本不用介入前台工作,前台自己组装自己的页面) 前端妹妹 用它的angelerJS 什么之类的 ,在它的html页面上用她的前端模板,做好。 然后再它的html上用 $.get("/news",function(data,status){})  。直接他利用ajax可以向我后端发送请求,然后前端妹妹得到json 数据,然后她将数据和她的html模板绑定 ,。  此时,她将她写好了的html 和CSS给我后端,我只要负责提供静态服务就行了,因为,html的动态请求是在客户的浏览器,js自动填充而生成。
    
    json  :    [{"name":陈,"sex":"man"}]    
    jsonp(要靠它完成跨域)  : ([{"name":陈,"sex":"man"}] )
    
    ./  和 不加/  都是一样的  都是相对路径
    
    _dirname  是代表 node.js后台  当前这个js文件 的目录
    
    mongoDB开机:
    开一个CMD
    mongod --dbpath c:mongo
    
    如果直接mongod 是默认 c:datadb
    mongod 代表开机 ;  dbpath 代表数据库文档真实存放的位置
    .ns结尾的文件 就是数据库
    
    mongoDB使用:
    再开一个CMD,  输入
    mongo 
    
    collections 相当于表
    mongoimport --db XX --collenction XX --drop --file XXX.json
    
    mongodb-shell  3.0  官方文档 https://docs.mongodb.com/getting-started/shell/import-data/
    
  • 相关阅读:
    Selenium3+python3自动化(三十九)--python3.7上SendKeys报错用PyUserInput取代
    Selenium3+python3自动化(三十八)--异常后截图(screnshot)、只截某个元素的图
    python学习6--python读取excel数据
    Selenium3+python3自动化(三十七)--捕获异常(NoSuchElementException)、try...except
    Selenium3+python3自动化(三十六)--expected_conditions模块 判断文本(text_to_be_present_in_element)
    Selenium3+python3自动化(三十五)--登录方法(参数化)
    Selenium3+python3自动化(三十四)--expected_conditions模块 判断弹出框存在(alert_is_present)
    Selenium3+python3自动化(三十三)--万能的js解决click()、clear()失效问题
    Selenium3+python3自动化(三十二)--4类32种定位方法(find_element_by_xx, find_elements_by_xx, find_element)
    Selenium3+python3自动化(三十一)--元素定位参数化(find_element)
  • 原文地址:https://www.cnblogs.com/czy16/p/8512755.html
Copyright © 2011-2022 走看看