首页 > 应用开发 > Html/css > 好程序员web前端培训分享node学习笔记
NodeJS中链接Mongodb
1、安装
cnpm install mongodb -S
2、创建链接的地址
3、链接
const mongoClient = require( "mongodb" ).MongoClient; //2、创建链接的方式 const url = "mongodb://127.0.0.1:27017" ; //3、创建链接的数据库 const db_name = "gp17" ; //4、链接 mongoClient.connect(url,(err,client)=>{
if (err){
console.log( "链接失败" )
} else {
console.log( "链接成功" )
//5、链接数据库以及表 var user = client.db(db_name).collection( "user" );
}})
1、mongoose与mongodb的区别
参考上面的
2、NodeJS链接mongoose
const mongoose = require( 'mongoose' ); //是一个构造函数 用来限制表的字段类型 const Schema = mongoose.Schema; //链接的地址 const url = "mongodb://127.0.0.1:27017/gp17" ; //链接 mongoose.connect(url,(err)=>{
if (err){
console.log( "链接失败" );
} else {
console.log( "链接成功" )
}}) //链接表/创建表 var StudentsSchema = new Schema({
sname : String ,
sage : Number }) //返回值是一个构造函数 const Students = mongoose.model( "student" ,StudentsSchema); //如果表的名称是复数则 数据库中的表名称不会变 如果不是复数则数据库中标的名称会自动加s // mongoose.model("students",{// sname:String,// sage:Number// })
<!DOCTYPE html> < html lang = "en" >< head >
< meta charset = "UTF-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< meta http-equiv = "X-UA-Compatible" content = "ie=edge" >
< title > Document </ title >
< link rel = "stylesheet" href = "./css/index.css" ></ head >< body >
< h1 > index页面 </ h1 >
< div >
< img src = "./img/u=2071817741,4218539796&fm=58&s=EE7A2FC0DE0120D6CF6D1509010070D2.jpg" alt = "" >
< img src = "./img/u=2708490274,319030395&fm=58&s=9E3269850EF36DB70811A15B03008060.jpg" alt = "" >
< img src = "./img/u=3473750589,1700978550&fm=58&s=4E946D84D2417CFE5C3FB5D90300D0B9.jpg" alt = "" >
< img src = "./img/u=3508817781,1654561115&fm=58&s=6D83639716736DB3087070600300E070.jpg" alt = "" >
</ div >
< form id = "user" >
用户名: < input type = "text" id = "username" >
密码: < input type = "text" id = "password" >
< input type = "submit" >
</ form ></ body ></ html >< script src = "./js/index.js" ></ script >< script src = "https://cdn.bootcss.com/jquery/1.11.3/jquery.js" ></ script >
< script >
$( "#user" ).on( "submit" , function (e) {
e.preventDefault()
var username = $( "#username" ).val();
var password = $( "#password" ).val();
$.ajax({
url : "/user/register" ,
method : "post" ,
data : {
username,
password
},
success :function (data){
console.log(data);
}
})
}) </ script >
const http = require( "http" ); const router = require( "./router" ) const server = http.createServer(router) router.post( "/user/register" ,(req,res)=>{
console.log(req.body);
res.json({
code : 200 ,
errMsg : ''
})}) server.listen( 9000 ) const url = require( "url" ); const fs = require( "fs" ); const path = require( "path" ); const qs = require( "querystring" ) //收集事件 const routerMap = {
get : {},
post : {}} const router = function (req,res){
//给res添加一个json方法 res.json = function (obj){
res.end(JSON.stringify(obj))
}
//处理静态资源 handleStatic(req,res);
//获取用户请求的方式 var method = req.method.toLowerCase();
//获取用户请求的地址 var {pathname,query} = url.parse(req.url, true );
if (method === "get" ){
if (routerMap.get[pathname]){
//将query的值赋值给req.query req.query = query;
routerMap.get[pathname](req,res)
} else {
res.end( "404" )
}
} else if (method === "post" ){
if (routerMap.post[pathname]){
var str = "" ;
//获取post传递的参数 req.on( "data" ,(data)=>{
str += data;
})
req.on( "end" ,()=>{
req.body = qs.parse(str);
routerMap.post[pathname](req,res)
})
}
}} //注册事件 router.get = function (path,callback){
routerMap.get[path] = callback;} //注册事件 router.post = function (path,callback){
routerMap.post[path] = callback;} //处理所有的静态资源访问 function handleStatic(req,res){
var {pathname} = url.parse(req.url, true );
//获取文件的后缀 var ext = pathname.substring(pathname.lastIndexOf( "." ));
if (pathname === "/" ){
res.writeHead( 200 ,{ "content-type" : "text/html;charset=utf8" });
res.end(getFile(path.join(__dirname, "../public/index.html" )))
} else if (ext === ".css" ){
res.writeHead( 200 ,{ "content-type" : "text/css;charset=utf8" });
res.end(getFile(path.join(__dirname, "../public" ,pathname)));
} else if (ext === ".js" ){
res.writeHead( 200 ,{ "content-type" : "application/x-javascript;charset=utf8" });
res.end(getFile(path.join(__dirname, "../public" ,pathname)));
} else if ( /.*\.(jpg|png|gif)/ .test(ext)){
res.writeHead( 200 ,{ "content-type" : `image/${ RegExp .$1 };charset=utf8` });
res.end(getFile(path.join(__dirname, "../public" ,pathname)));
} else if (ext === ".html" ){
res.writeHead( 200 ,{ "content-type" : "text/html;charset=utf8" });
res.end(getFile(path.join(__dirname, "../public" ,pathname)));
}} function getFile(filePath){
return fs.readFileSync(filePath);} module.exports = router;
1、什么是express?
Express 是一个保持最小规模的灵活的 Node.js Web 应用程序开发框架,为 Web 和移动应用程序提供一组强大的功能
2、什么是中间件
请求和回复之间的一个应用
3、常见的中间件有哪些?
1、应用层中间件(http请求之类的应用)
const express = require( "express" ); const app = express(); //应用层的中间件 app.use((req,res,next)=>{
console.log( 123 );
next()}) app.use((req,res,next)=>{
console.log( 456 )
next()}) app.use((req,res,next)=>{
console.log( 789 );
next();}) app.use( "/home" ,(req,res,next)=>{
res.end( "home" );}) app.get( "/list" ,(req,res,next)=>{
res.end( "list" )}) app.post( "/list" ,(req,res,next)=>{
res.end( "list" )}) app.listen( 9000 ,()=>{
console.log( "server address:127.0.0.1:9000" )}) /* express中的中间件会分为哪几类? 1、应用层中间件(http请求之类的应用) app.use app.get app.post 2、内置中间件 3、错误处理中间件 4、路由中间件 5、第三方中间件 6、自定义中间件 如何使用中间件? app.use(中间件) 使用中间件 app.use中的参数 path:选填 callback || router 如果是callback的请求下 这个回调中会有3个参数 req:请求 res:响应 next:执行下一个中间件 只要http这个服务跑一次那么久会将app.use中的所有函数统一执行一遍*/
2、内置中间件
const express = require( "express" ); const app = express(); const path = require( "path" ); //内置中间件 app.use(express. static (path.join(__dirname, "./public" ))) app.listen( 9000 ,()=>{
console.log( "server address:127.0.0.1:9000" )})
3、错误处理中间件
const express = require( "express" ); const app = express(); const path = require( "path" ); //内置中间件 app.use(express. static (path.join(__dirname, "./public" ))) //错误中间件处理一般写在程序的最后面 app.use((req,res,next)=>{
res.status( 404 ).send( "没有这个页面" )}) app.listen( 9000 ,()=>{
console.log( "server address:127.0.0.1:9000" )})
4、路由中间件
const express = require( "express" ); const app = express(); const path = require( "path" ); const indexRouter = require( "./router/index" ); //内置中间件 app.use(express. static (path.join(__dirname, "./public" ))) //路由级别的中间件 app.use( "/user" ,indexRouter) app.listen( 9000 ,()=>{
console.log( "server address:127.0.0.1:9000" )})
5、第三方中间件
例如 cheerio jsonwebToken等
6、自定义中间件
自己根据需求封装的中间件
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69913864/viewspace-2686547/ ,如需转载,请注明出处,否则将追究法律责任。