四、mongoose的使用
mongoose 核心概念 schema 约束字段/列数据 model模型 对应 集合 后期用它来实现数据增删改查 简介 安装 npm i mongoose schema 英文网: http://mongoosejs.com 中文网: http://mongoosejs.net/ 作用:用来约束MongoDB文档数据(哪些字段必须,哪些字段可选的) model 一个模型对应一个集合。后面通过模型管理集合中的数据。 使用 基本模型 // 一、导入模块 const mongoose = require("mongoose"); // 二、连接数据库 const db = mongoose.createConnection( "mongodb://shop2:shop2@localhost:27017/shop", { useNewUrlParser: true, useUnifiedTopology: true }, (err) => { if (err) { console.log( ...
三、MongoDB高级操作
排序&分页 准备数据 use test3 db.c1.insert({_id:1,name:"a",sex:1,age:1}) db.c1.insert({_id:2,name:"a",sex:1,age:2}) db.c1.insert({_id:3,name:"b",sex:2,age:3}) db.c1.insert({_id:4,name:"c",sex:2,age:4}) db.c1.insert({_id:5,name:"d",sex:2,age:5}) db.c1.find() 排序 db.集合名.find().sort(JSON数据) Limit与Skip方法 db.集合名.find().sort().skip(数字).limit(数字) skip跳过指定数量(可选) limit限制查询的数量 使用.count()可以统计数量 实例练习 跳过0条数据,查询两条 db.c1.find().sort({age:-1}).s ...
二、MongoDB基本操作及增删改查
基本操作 登陆数据库 mongo 查看数据库 语法 show databases; 选择数据库 use 数据库名 如果切换到一个没有的数据库,例如use admin2,那么会隐式创建这个数据库。(后期当该数据库有数据时,系统自动创建) use admin2 查看集合 show collections 创建集合 db.createCollection('集合名') 删除集合 db.集合名.drop() 删除数据库 通过use语法选择数据 通过db.dropDataBase()删除数据库 增删改查 C增 db.集合名.insert(JSON数据) 如果集合存在,那么直接插入数据。如果集合不存在,那么会隐式创建。 在test2数据库的c1集合中插入数据(姓名叫webopenfather年龄18岁) use test2 db.c1.insert({uname:"webopenfather",age:18}) 数据库和集合不存在都隐式创建 对象的键统一不加引号(方便看),但是查看集合数据时系统会自动加 mongodb会给每条数据增加一个 ...
一、MongoDB的安装
Windows系统 由于二进制包安装了半个小时,还是卡在进度条不动。因此决定使用压缩包进行安装。 下载安装包 下载地址 下载完成后将其解压,例如我解压到了F:\MongoDB文件下。 将bin目录添加到环境变量。 接下来进入该文件创建data与logs文件 以管理员身份启动终端,然后输入如下命令 mongod --install --dbpath F:\MongoDB\data --logpath F:\MongoDB\logs\mongo.log 开启数据库服务 net start mongodb 链接数据库 mongo 其他命令 删除服务 mongod --remove 关闭服务 net stop mongodb Linux系统
十、promise的使用
Promise用来做什么 用来解决回调地狱。回调地狱也就是回调函数中嵌套了回调函数,代码阅读性低。 例如如下代码: const fs = require("fs"); // 读A文件 fs.readFile(`${__dirname}/etc/a.txt`, "utf-8", (err, data) => { if (err) { console.log(err); } else { console.log(data); // 读B文件 fs.readFile(`${__dirname}/etc/b.txt`, "utf-8", (err, data) => { if (err) { console.log(err); } else { console.log(data); // 读C文件 fs.readFile(`${__di ...
九、英雄管理(cqmanager)系统
查看源码 准备 mysql-ithm的使用 安装npm i mysql-ithm 使用 参照文档即可。 简单示例 // 导入模块 const hm = require("mysql-ithm"); //2.连接数据库 //如果数据库存在则连接,不存在则会自动创建数据库 hm.connect({ host: "localhost", //数据库地址 port: "3306", user: "root", //用户名,没有可不填 password: "root", //密码,没有可不填 database: "cqmanager502", //数据库名称 }); //3.创建Model(表格模型:负责增删改查) //如果table表格存在则连接,不存在则自动创建 let herotModel = hm.model("hero", { heroName: String, heroSkill: String, }); //4.调用API:添加数据 // he ...
八、NPM包管理
如何写NodeJs模块 遵守CommonJS规范。 导入模块 暴露出去(导出) 一个简单的示例: // 定义一个对象 let db = { baseUrl: "http://127.0.0.1:3000/", insert: function () { console.log("插入方法"); }, delete: function () { console.log("删除方法"); }, }; // 将其暴露出去 module.exports = db; 在我们的模块中定义一个对象,并将其暴露出去。接下来在我们自己的js文件中去使用这个对象。 const myMoudle = require("./01-自己写的模块.js"); myMoudle.insert(); 写一个自己的模块 NPM发布包 进入待发布的目录,然后初始化目录npm init。并依次填入包名、版本、描述等信息。如果没有可以跳过(回车)。 注册NPM账号 ...
七、NodeJs数据库管理
建表 MySQL程序可以使用PHP study集成工具。链接、操作数据库可以使用phpstudy自带的工具也可以使用navicat工具。 SQL语句-增删改查 插入数据 insert into 表名(字段名1,字段名2) values(值1,值2); 例如: insert into user(name,description) values('陈浩南','铜锣湾扛把子'); 删除数据 delete from 表名 where 条件; 条件一定要写,如果不写则会删除该表中所有的数据删除。 例如: delete from user where id>3; 修改数据 update 表名 set 字段名1=新值1,字段名2=新值2 where 条件; 条件一定要写,如果不写则会修改数据表中的全部数据 例如: update user set name='子风兄',description='比波波还骚' where id=3; 查询数据 select * from 表名 [where 条件]; NodeJs操作数据库 NodeJs链接数据库需要使用模块mysql。基本 ...
六、中间件与跨域
什么是中间件 在路由相应之前就会执行中间件的内容,例如在中间件中进行赋值,这种就可以在路由执行时使用这个值。 所以中间件就是服务器开启之后和路由响应之前执行的一个函数。这个函数可以操作req与res。使用next()向下传递到下一个中间件,最后传到路由。 例如开启三个中间件的写法: app.use((req, res, next) => { console.log("中间件1"); req.requestTime = Date.now(); next(); }); app.use((req, res, next) => { console.log("中间件2"); next(); }); app.get("/", (req, res) => { console.log(Date.now() - req.requestTime); res.send("Hello World!"); }); 什么是跨域 浏览器使用ajax时,如果请求的接口地址和当前打开的页面地址不同源称之为跨域。 协议和地址 ...








