使用Node.js開發(fā)APP的步驟
1.創(chuàng)建項(xiàng)目目錄
mkdir myapp
cd myapp
合并以上兩步驟
mkdir myapp && cd myapp
2.初始化
npm init --yes //目的:為了創(chuàng)建package.json文件慎宾,該文件記錄了項(xiàng)目中所有使用的模塊。
3.創(chuàng)建項(xiàng)目結(jié)構(gòu)
myapp
- views
- public
- routes
- package.json
- package-lock.json
- app.js
4.安裝模塊
npm install express
5.引入模塊
const express = require('express')
6.寫需求
·····
public目錄
網(wǎng)站根目錄
1.項(xiàng)目根目錄:訪問權(quán)限設(shè)置為公開的、任何人都可以訪問的焰轻。
public目錄
定義:public目錄是Node.js
express框架
- 框架的核心是構(gòu)造函數(shù)express()
- Express()構(gòu)造函數(shù)用于創(chuàng)建一個(gè)APP實(shí)例(服務(wù)器類型的app)
- express是基于Node.js平臺(tái)。
- Node.js平臺(tái)是運(yùn)行js文件的女淑。
- Node.js項(xiàng)目目錄
- index.js app.js server.js
- views
①html視圖模板
②ejs視圖引擎
- public
① - 普通項(xiàng)目目錄
- index.html
- css
①style.css
- js
①Script.js
創(chuàng)建數(shù)據(jù)庫(kù)
方案1:創(chuàng)建本地mongoDB數(shù)據(jù)庫(kù)
1.開啟mongoDB數(shù)據(jù)庫(kù)
2.鏈接數(shù)據(jù)庫(kù)
------1.可以使用可視化軟件compass
------2.非可視軟件mongosh
3.創(chuàng)建數(shù)據(jù)庫(kù)名
------1.使用compass手動(dòng)創(chuàng)建
------2.使用mongosh手動(dòng)創(chuàng)建
4.創(chuàng)建數(shù)據(jù)庫(kù)用戶
db.createUser({
user:'zhangsan',
pwd:'123456',
roles:[{role:'readwrite,db:'config'},'clusterAdmin'] => roles:['readwrite']
})
方案2:創(chuàng)建云數(shù)據(jù)庫(kù)
1.登入Atlas賬戶
2.創(chuàng)建數(shù)據(jù)庫(kù):lisi
3.創(chuàng)建用戶:賬戶:aicblm 密碼:******
鏈接字符串
定義:鏈接字符串特指在App開發(fā)過程中鏈接數(shù)據(jù)庫(kù)的地址
語法
"協(xié)議://用戶名:密碼@數(shù)據(jù)庫(kù)地址/數(shù)據(jù)庫(kù)名"
云數(shù)據(jù)庫(kù)的鏈接字符串
"mongodb+srv://mtl3389767905:3389767905Ma@lisi.klubhud.mongodb.net/?retryWrites=true&w=majority"
本地?cái)?shù)據(jù)庫(kù)的鏈接字符串
mongodb://lisi:3389767905Ma@127.0.0.1/lisi
mongodb://lisi:3389767905Ma@localhost:27107/lisi
Node和mongoDB的通信
通信方式有兩種:
- MongoDB模塊:Node.js原生提供的通信方式
- mongodb模塊是Node.js原生提供的與MongoDB數(shù)據(jù)庫(kù)通信的API扶叉。 - Mongoose模塊:第三方提供的通信方式
- 第三方提供的在Node平臺(tái)與MongoDB數(shù)據(jù)庫(kù)通信的方式。
- Mongoose是一個(gè)函數(shù)庫(kù)接剩。
- 庫(kù):就是函數(shù)的集合。
- Mongoose庫(kù)包裹Node API
鏈接數(shù)據(jù)庫(kù)
打開'app,js'文件
mongoose是什么
- mongoose的核心是monggoose()構(gòu)造函數(shù)
- mongoose是一個(gè)ODM(對(duì)象事件模型)(Object Data Model)
- 使用js對(duì)象的語法來映射MongoDB數(shù)據(jù)庫(kù)中的表和document
①collection:數(shù)據(jù)庫(kù)
②
Schema()
- Schema()是一個(gè)構(gòu)造函數(shù)萨咳。
- Schema()構(gòu)造函數(shù)用于創(chuàng)建實(shí)例對(duì)象
- 每一個(gè)schema實(shí)例對(duì)象映射一個(gè)MongoDB數(shù)據(jù)庫(kù)表懊缺。
- 定義標(biāo)中的document結(jié)構(gòu)
語法
new Schema(obj,options)
new Schema( {定義數(shù)據(jù)庫(kù)表結(jié)構(gòu)},{選項(xiàng)對(duì)象:描述前面的表} )
返回值:返回schema對(duì)象
實(shí)例:創(chuàng)建一個(gè)schema表,用來存儲(chǔ)博客的文章
const blogSchema = new Schema({
title:{
type:String,
required:true,
},
author:{
type:String,
required:true,
},
snippet:{
type:String,
required:true,
},
body:{
type:String,
required:true,
}
},{})
express.static
定義:配置要暴露的靜態(tài)資源,公開資源
在app.use里用
find()
用來查詢?nèi)績(jī)?nèi)容
findById()
使用id來查詢內(nèi)容