<node.js學習筆記(完)>pug,mongodb命令(之後是node的案例,一個部落格)

liangsheng0111發表於2018-12-19

1.pug

  1. 一個簡單的pug文件

<node.js學習筆記(完)>pug,mongodb命令(之後是node的案例,一個部落格)

相當於此html文件

<node.js學習筆記(完)>pug,mongodb命令(之後是node的案例,一個部落格)

  1. koa-views模組:模板引擎模組,把pug註冊到koa上
    a). 新建app.js
    const Koa = require("koa");
    const views = require('koa-views'); //用來管理模板引擎
    const {join} = require("path");
    
    const koa = new Koa;
    
    //__dirname 當前所在檔案的目錄 
    koa.use(views(join(__dirname, 'views'), {
        extension : "pug"
    }));
    
    //用來處理路由請求的中介軟體
    //render中兩個引數 第一個為路徑,第二個作為屬性傳到pug檔案中的變數上
    koa.use( async (ctx) => {
        await ctx.render("index", {
            bool : 1
        });
    }).listen(3000, () => {
        console.log("開始監聽3000埠");
    });
    複製程式碼

view()方法中,第一個參數列示檔案的路徑;第二個參數列示匹配的模板引擎型別,此處為pug

b). 新建index.pug  
```
doctype html
html
    head
        meta(charset="UTF-8")
        title sjl
    body
        div.box#wrap wrap內容
        div(class = bool ? "sjl" : "yl") 簡單pug文件
    
```  
複製程式碼

在app.js檔案中的bool的值,可以傳遞給index.pug中


2.mongodb資料庫

1.增刪改查命令
  1. 啟動服務端:mongod --dbpath "路徑" :指定資料庫資料位置

<node.js學習筆記(完)>pug,mongodb命令(之後是node的案例,一個部落格)
2. 啟動客戶端:mongo

<node.js學習筆記(完)>pug,mongodb命令(之後是node的案例,一個部落格)
3. 顯示資料庫: show dbs

<node.js學習筆記(完)>pug,mongodb命令(之後是node的案例,一個部落格)
4. 建立並進入子資料庫(有的話直接進入): use liangsheng

<node.js學習筆記(完)>pug,mongodb命令(之後是node的案例,一個部落格)
5. 新增資料:db.liangsheng.insert({name:"sjl"})

<node.js學習筆記(完)>pug,mongodb命令(之後是node的案例,一個部落格)
6. 刪庫:db.dropDatabase()

<node.js學習筆記(完)>pug,mongodb命令(之後是node的案例,一個部落格)

在liangsheng資料庫位置下:

  1. 建立集合名:db.createCollection("javaScript")
    第一個引數是集合名,第二個引數是大小(可不寫)
    <node.js學習筆記(完)>pug,mongodb命令(之後是node的案例,一個部落格)
  2. 顯示庫內所有集合名:show collections

<node.js學習筆記(完)>pug,mongodb命令(之後是node的案例,一個部落格)
9. 刪除集合:db.javaScript.drop()

<node.js學習筆記(完)>pug,mongodb命令(之後是node的案例,一個部落格)

  1. 在集合裡存資料:db.user.insert({name:"sjl"})
    可存入多條相同的資料,id值會不同

<node.js學習筆記(完)>pug,mongodb命令(之後是node的案例,一個部落格)

  1. 檢視集合裡所有文件:db.user.find()
    <node.js學習筆記(完)>pug,mongodb命令(之後是node的案例,一個部落格)

更新文件:當修改的屬性在文件中沒有時,會建立

  1. 修改第一條屬性:db.user.update({"name":"sjl"},{$set:{"name": "yl"}})

<node.js學習筆記(完)>pug,mongodb命令(之後是node的案例,一個部落格)

  1. 修改所有: db.user.update({"name":"sjl"},{$set:{"name": "yl"}},{multi:true})

<node.js學習筆記(完)>pug,mongodb命令(之後是node的案例,一個部落格)


3.連線資料庫
  1. 下載包:mongoose:連線mongo資料庫的包
    npm i mongoose -S
  2. 匯入包:const mongoose = require("mongoose")
  3. 程式碼:
// mongoose  匯入包
const mongoose = require("mongoose");

//連線資料庫,返回一個例項
//第一個引數:資料庫路徑; 第二個引數:固定引數
const db = mongoose.createConnection(
    "mongodb://localhost:27017/sjl",
    {useNewUrlParser : true});

//用原生的es6的promise替換掉mongoose自定義的promise
mongoose.Promise = global.Promise;  

//監聽是否連結成功
db.on("error", () => {
    console.log("sjl資料庫連結失敗");
});

db.on("open", () => {
    console.log("sjl資料庫連結成功");
});

// 規範資料的欄位,得到Schema類
const Schema = mongoose.Schema;

//得到Schema例項,用來規範資料型別或者欄位
//第一個引數:設定規範 ; 第二個引數:去掉版本號
const userSchema = new Schema({
    name : String,
    age : Number, //型別的建構函式
    sex : String
},{
    versionKey : false
});

//得到操控集合的物件 / 建立一個集合,返回一個建構函式
const User = db.model("user", userSchema, "user"); 

//注:model第三個參數列示插入集合的文件的集合,若不寫,系統會新建users並存入users中
複製程式碼

存資料:

//要插入集合的文件/資料
const obj1 = {
    name : "bbb",
    age : 18,
    sex : "男"
};

//插入資料
const d1 = new User(obj1);
d1.save((err, data) => {
    console.log(data);
});
//save返回promise物件
複製程式碼

刪除資料:

//刪除最先查詢的那條資料deleteOne
User.deleteOne({ name: "sjl" }, function (err) {
    if (err) console.log(err);
  });
  
//刪除所有查詢的那條資料deleteMany
User.deleteMany({ name: "sjl" }, function (err) {
    if (err) console.log(err);
  });
複製程式碼

相關文章