Node(4)

2023-11-18


express跨域解决

方式一

//设置请求头
app.all("*",function(req,res,next){
	//设置响应头
	res.setHeader("Access-Control-Allow-Origin","*")
	res.setHeader("Access-Control-Allow-Methods","GET,POST")
	next()
})

方式二

const cors = require("cors")
app.use(cors())

路由传参

//路由传参
router.get("/:id/:name",function(req,res,next){
	res.send(req.params)//获取传递的参数 id为一个键 name 为一个键
	res.end()
})

静态资源渲染(serve-static)

app.use("/publi",express.static('./public'))//给app加一个静态资源管理

MVC

model 主要是业务处理数据库查询
view主要是视图
controller主要是请求处理

1.新建文件夹 routers 路由管理utils工具类

路由内容

const express = require('express')
const userController = require('../controller/userController')
const router = express.Router()
router.get('/user/',userController.queryAll)
module.exports = router

工具类

//1.导入
const mysql = require('mysql)
const config = require('./config')
class MysqlUtils{
	constructor(){
		this.pool = null
	}
	static init(){
		this.pool = mysql.createPool(config)
	}
	static querySql(sql,params=null){
		return new Promise((success,error)=>{
			this.pool.getXonnection((err,conn)=>{
				if(err) therow new Error('获取连接失败')
				conn.query(sql,params,function(err,data){
					if(err) error('执行失败')
					ele success(data)
				})
				//释放连接
				conn.release()
			})
		})
	}
}
module.esports = MysqlUtils

配置

module.exports = {
	host:"localhost",
	port:"3306",
	user:"root",
	password:"root",
	database:"db_user",
	charset:"UTF8_GENERAL_CI"
}

2. 新建文件夹 controller 请求处理

const us = require('../model/service/userService')
//查询所有的处理
const queryAll = (req,res,next) =>{
	us.findAll().then(result=>{
		res.send({message:"ok",data:result})
		res.end()
	})
}
module.exports = {
	queryAll	
}

3.新建文件夹 model (service 和dao)

dao

//导入mysql的工具类
const mysqlUtils = requie('../../utils')

mysqlUtils.init()
//查询所有的数据
const findAll = () => {feturn mysqlUtils.querySql('select * from t_user')}
module.exports = {
	findAll
}

server

contst userDao = require('../dao/userDap')
contst findAll = () =>{
	return userDao.findAll()
} 

module.exports = {
	findAll
}

4. 新建一个入门文件

const express = require('express')
const cors = require('cors')
const router = require('./routers')

const app = express()
app.use(cors()) //跨域
app.use(express.urlencoded({extended:false}))//body里面的数据读取
app.use(express.json())//请求数据转换
app.use(exoress.static('./view'))//静态资源
app.use(router)//所有路由

app.listen(9999.function(){
	console.log('服务器启动')
})

根据id查询

dao

//导入mysql的工具类
const mysqlUtils = require(../../utils)

mysqlUtils.init()
//查询所有的数据
const findAll = () =>{return mysqlUtils.querySql('select * from t_user')}
//根据id查询
const findById= (id)=>{returm mydqlUtils.querySql('sele * from t_user where id = ?',id)}
module.exports = {
	findAll,
	findById
}

service

const userDao = require('../dao/userDao')

consr findAll = (id)=>{
	if(id){
		return userDao.findById(id)
	}
	return userDao.findAll()
}
const findById = (id) =>{
	return userDao.findById(id)
}
module.exports={
	findAll,
	findById
}

controller

const us - require('../model/service/userService')
//查询所有的处理
const qureyAll = (req,res,next) =>{
	us.findAll(req.query.id).then(result=>{
		console.log(req.query.id)
		res.send()
	})

}
const queryById = (req,res,next)=>{
		us.findById(req.params.id).then(result=>{
		res.send({message:'ok',data:result})
		res.end()
		})
	}
	module.exports = {
		queryAll,
		queryById	
	}

路由

const express = require ('express')
const userContriller = require('../controller/userController')
const router = express.Router()
router.get('user/',userController.queryAll)
router.get('user/:id',userController.queryById)//路由传参
module.exports = router

分页参数

**dao

//分页查询
const findLimit= (start,count) =>{return  mysqlUtils.querySql('select * from t_user limit ?,?',[start,count])}

service

const findUserLimit = (page,limit) =>{
   if(!limit){
      limit = 10
   }
   if(!page){
      page = 1
   }
   // page 第几页
   // limit 个数
   // 计算开始的位置
   let start = (page-1)*limit
   return userDao.findLimit(start,parseInt(limit))
}

controller

const queryAll = (req,res,next) => {
    //分页查询
    if(req.query.limit || req.query.page){
            us.findUserLimit(req.query.page,req.query.limit).then(result=>{
                res.send({message:'ok',data:result}) 
                res.end()
            })
    }else{
        //查询所有
        us.findAll(req.query.id).then(result=>{
            res.send({message:'ok',data:result}) 
            res.end()
           })
    }
}

路由

const express = require('express')
const userController = require('../controller/userController')
const router =  express.Router()
router.get('/user/',userController.queryAll)
router.get('/user/:id',userController.queryById) //路由传参
module.exports = router
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Node(4) 的相关文章

  • socket.io 的良好初学者教程? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Javascript Promise“then”始终运行,即使 Promise 未能执行

    我希望当调用第二个 then 时不执行第三个 then 但是 即使 Promise 被拒绝 调用第二个 then 并且代码返回 rejected 然后返回 undefined 它仍然调用第三个 then 如何不运行第三个 then 这样 未
  • 如何修改每个JSON对象javascript

    我想修改里面的每个 JSON 值cooldown object cooldown user 1 This user2 0 This 在 Javascript 中使用 for 语句 我研究了好几个小时 只找到了内部的 blocks Edit
  • 如何在react-bootstrap中禁用表单提交的

    在下面的代码片段中 我有许多文本类型的输入表单 如果用户点击 我似乎会得到相同的合成事件 就像他们按下提交按钮一样 我想忽略作为表单提交 只允许一个人按下 提交 按钮 我删除了一些表单组以减少示例 在所有情况下 按钮或 ENTER 键 e
  • 如何将内联 JavaScript 与 Express/Node.js 中动态生成的内容分开?

    对于具有几年 Web 开发经验但没有找到答案的人来说 这是一个有点菜鸟的问题程序员堆栈交换 or Google 我决定在这里问一下 我在用Express网络框架Node js 但这个问题并不特定于任何 Web 框架或编程语言 以下是从数据库
  • 摩卡 - Chai Karma“套件未定义”

    我对 jscript tdd 很陌生 遇到了问题 希望有人能告诉我我在做什么 在浏览器中运行测试 通过 HTML 文件 一切正常 通过节点和业力运行它们我得到以下异常 我想在 node js 主机的 karma 中使用 Mocha 和 Ch
  • 带有淘汰赛js的隐形recaptcha

    我正在完成隐形验证码 但我在实现它时遇到问题 谷歌开发人员页面中的代码显示它应该是这样的
  • Snap.svg - 停止在可悬停元素的子元素上重新触发悬停事件

    对于一个项目 我使用的 SVG 形状由背景多边形和背景多边形上方的一些文本 我已将其转换为路径 组成 我正在使用 Snap svg 为我的形状设置动画 当我将鼠标悬停在多边形上时 形状应该缩放到特定尺寸 包括其中的所有内容 鼠标移开时 形状
  • React Native - 无法从“index.js”解析模块“@babel/runtime/helpers/interopRequireDefault”

    正如中提到的无法解析模块 babel runtime helpers interopRequireDefault https stackoverflow com questions 52486219 unable to resolve mo
  • 尝试将数据存储在点击器网站中

    我正在尝试存储一个名为的变量score无论何时刷新 您都会一次又一次地使用它 我不明白的是它的代码是什么 我尝试了一些方法 但似乎都不起作用 这是我的答题器网站 但是当我尝试使用 JavaScript 来存储它时 它不起作用window o
  • 如何解决 Typescript 构建中的错误“找不到模块 'jquery'”

    我目前在 ts 文件的顶部有这个import require jquery 我这样做是因为我试图在我的打字稿文件中使用 jquery 但我似乎无法编译它 因为它返回标题中所述的错误 我正在使用 ASP NET CORE 脚本文件夹 tsco
  • 为什么我们在打字稿中使用 HTMLInputElement ?

    我们为什么使用 document getElementById ipv as HTMLInputElement value 代替 document getElementById ipv value 功能getElementById返回具有类
  • 有没有办法在 onclick 触发时禁用 iPad/iPhone 上的闪烁/闪烁?

    所以我有一个有 onclick 事件的区域 在常规浏览器上单击时 它不会显示任何视觉变化 但在 iPad iPhone 上单击时 它会闪烁 闪烁 有什么办法可以阻止它在 iPad iPhone 上执行此操作吗 这是一个与我正在做的类似的示例
  • 在移动设备上滚动

    这个问题更多的是一个建议研究 我确实希望它对其他人有帮助 并且它不会关闭 因为我不太确定在哪里寻求有关此事的建议 在过去的 6 个月里 我一直在进行移动开发 我有机会处理各种设备上的各种情况和错误 最麻烦的是滚动问题 当涉及到在网站的多个区
  • 日期出现奇怪的错误,“未捕获非法访问”

    所以我试图找到最新的DateJavascript 可以处理 我把它减少到 9 月 275760 并增加了我开始捕获未捕获的天数illegal access例外new Date 09 24 275760 to new Date 10 13 2
  • Three.js 各种大小的粒子

    我是 Three js 的新手 正在尝试找出添加 1000 个粒子的最佳方法 每个粒子都有不同的大小和颜色 每个粒子的纹理是通过绘制画布创建的 通过使用粒子系统 所有粒子都具有相同的颜色和大小 为每个粒子创建一个粒子系统是非常低效的 有没有
  • 代码镜像错误:未捕获错误:扩展集中无法识别扩展值([对象对象])

    全部 我目前正在从事一个React Electron项目 该项目的目标是完成一个Markdown编辑器 当我配置codemirror 该程序报告错误说 Uncaught Error Unrecognized extension value
  • 在 Shopify 商店中嵌入 Vue 组件

    在产品页面中 我尝试显示自定义 Vue 组件 为简洁起见 该组件根据给定的产品 ID 显示 Firebase 数据库中的一些信息 我最初尝试将其制作为 Shopify 应用程序 以便我可以访问他们的 API 我实现了 OAuth 并且可以检
  • 如何用另一个响应替换窗口的 URL 哈希?

    我正在尝试使用替换方法更改哈希 URL document location hash 但它不起作用 function var anchor document location hash this returns me a string va
  • Javascript Replace() 和 $1 问题

    我正在尝试创建一个脚本来搜索文本中的模式并在它找到的字符串周围包裹一个标签 shop attributes td each function this html function i html return html replace E 0

随机推荐