当前位置: 首页 > news >正文

做钓鱼网站获利3万360推广登录入口官网

做钓鱼网站获利3万,360推广登录入口官网,pc网站做app,注册网站卖东西http 请求 实现get请求数据库数据;实现添加数据实现编辑数据实现删除数据实现导出txt文件、Excel文件实现查询数据库数据并利用导出为excel文件 node 版本 16.16.0 node 版本 18.16.0 会连接 MongoDB 数据库错误。 Connected to MongoDB failed MongoServerSele…

http 请求

  • 实现get请求数据库数据;
  • 实现添加数据
  • 实现编辑数据
  • 实现删除数据
  • 实现导出txt文件、Excel文件
  • 实现查询数据库数据并利用导出为excel文件

node 版本 16.16.0

node 版本 18.16.0 会连接 MongoDB 数据库错误。

Connected to MongoDB failed MongoServerSelectionError: connect ECONNREFUSED ::1:27017
{"name": "http-node-demo","version": "1.0.0","description": "","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1","start": "node index.js"},"author": "","license": "ISC","type": "module","dependencies": {"body-parser": "^1.20.2","mongodb": "^6.8.0","querystring": "^0.2.1"}
}

项目安装 MongoDB 的 node 版本要跟启动时的 node 版本一致,否则会报错

const timeoutError = new error_1.MongoServerSelectionError(`Server selection timed out after ${options.serverSelectionTimeoutMS} ms`,this.description
);

node 链接 MongoDB

// MongoDB连接配置
const mongoConfig = {url: "mongodb://localhost:27017",dbName: "note", //数据库名称
};
import { MongoClient } from "mongodb";
import { mongoConfig } from "./default.js";
const mongoDB = new MongoClient(mongoConfig.url);let db;async function mainFun() {// 创建MongoDB连接try {await mongoDB.connect();console.log("Connected to MongoDB successfully");db = mongoDB.db(mongoConfig.dbName);} catch (err) {console.log("Connected to MongoDB failed", err);}
}export { mainFun, db };

接口返回的形势

  • 返回 404
// 解析url
const urlObj = new URL(req.url, `http://${req.headers.host}`);const params = {};
const apiKey = `${urlObj.pathname}&${req.method.toLocaleLowerCase()}`;
const item = ALL_PATH.find((v) => `/${v}` == apiKey);// 找不到路由,返回404 Not Found
if (!item) {res.writeHead(404, {"Content-Type": "text/plain; charset=utf-8",}).end("Not Found");return;
}
  • 普通 JSON 字符串
import { db } from "../mongoDB/index.js";
const getUser = async () => {try {// 查询数据集合user的所有数据并转为数组形式const collection = await db.collection("user").find({}).toArray();let total = 0;collection.estimatedDocumentCount(function (err, count) {if (err) throw err;total = count;console.log("Estimated total number of documents: ", count);// client.close();});return {code: 200,data: {list: collection,total: total || 0,},};} catch (err) {return {code: 500,data: {list: [],total: 0,},};}
};
  • 返回文件流
import fs from "fs";
import path from "path";const __dirname = path.resolve();const downloadDocs = async () => {const promise = new Promise((resolve, reject) => {fs.readFile(__dirname + "/docs/新建文本文档.txt", (err, data) => {if (err) {console.error(err);reject("error");return;}resolve(data);});});try {const resData = await promise;return {code: 200,data: resData,contentType: "text/plain; charset=utf-8",};} catch (err) {return {code: 500,data: "",contentType: "text/plain; charset=utf-8",};}
};const downloadNoteTemplate = async () => {try {const data = fs.readFileSync(__dirname + "/docs/Note模板.xlsx");return {code: 200,data: data,contentType: "application/vnd.ms-excel; charset=utf-8",};} catch (err) {return {code: 500,data: "",contentType: "application/vnd.ms-excel; charset=utf-8",};}
};
resData {code: 200,data: <Buffer 50 4b 03 04 0a 00 00 00 00 00 87 4e e2 40 00 00 00 00 00 00 00 00 00 00 00 00 09 00 00 00 64 6f 63 50 72 6f 70 73 2f 50 4b 03 04 14 00 00 00 08 00 87 ... 9951 more bytes>,contentType: 'text/plain; charset=utf-8'
}

响应头

当标头已使用 response.setHeader() 设置时,则它们将与任何传给 response.writeHead() 的标头合并,其中传给 response.writeHead() 的标头优先。

语法

response.writeHead(statusCode[, statusMessage][, headers])
response.setHeader('Content-Type', 'text/html');
response.setHeader('Set-Cookie', ['type=ninja', 'language=javascript']);
// Returns content-type = text/plain
const server = http.createServer((req, res) => {res.setHeader("Content-Type", "text/html");res.setHeader("X-Foo", "bar");res.writeHead(200, { "Content-Type": "text/plain" });res.end("ok");
});

返回 xlsx 文件,前端下载处理

后端接口

const downloadNoteTemplate = async () => {try {const data = fs.readFileSync(__dirname + "/docs/Note模板.xlsx");return {code: 200,data: data,contentType: "application/vnd.ms-excel; charset=utf-8",};} catch (err) {return {code: 500,data: "",contentType: "application/vnd.ms-excel; charset=utf-8",};}
};

前端下载处理

<Button onClick={() => {request('/download/noteTemplate',{method: 'get',{/*  */}responseType: "blob",responseEncoding: "utf8",options: {returnDirect: true, //returnDirect 直接返回接口所有信息},}).then((res) => {console.log('res',res);downloadContentFileFun('测试.xlsx',res)})
}}>下载</Button>
export const downloadContentFileFun = (filename, text) => {// 下载Excel的文件, type: "application/vnd.ms-excel"需要与后端返回的content保持一致,否则会出现无法打开的情况let blob = new Blob([text], { type: "application/vnd.ms-excel" });const element = document.createElement("a");const href = URL.createObjectURL(blob);element.href = href;element.setAttribute("download", filename);element.style.display = "none";element.click();//调用这个方法来让浏览器知道不用在内存中继续保留对这个文件的引用了。URL.revokeObjectURL(href);element.remove();
};

返回 txt 文件,前端下载处理

后端接口

const downloadDocs = async () => {const promise = new Promise((resolve, reject) => {fs.readFile(__dirname + "/docs/新建文本文档.txt", (err, data) => {if (err) {console.error(err);reject("error");return;}resolve(data);});});try {const resData = await promise;return {code: 200,data: resData,contentType: "text/plain; charset=utf-8",};} catch (err) {return {code: 500,data: "",contentType: "text/plain; charset=utf-8",};}
};

前端下载处理

<ButtononClick={() => {request("download/homeDoc", {method: "get",responseType: "blob",responseEncoding: "utf8",options: {returnDirect: true, //returnDirect 直接返回接口所有信息},}).then((res) => {console.log("res", res);downloadContentFileFun("测试.txt", res);});}}
>下载
</Button>
export const downloadContentFileFun = (filename, text) => {// 这里的类型type改成application/vnd.ms-excel,发现也是可以正常打开的let blob = new Blob([text], { type: "text/plain; charset=utf-8" });const element = document.createElement("a");const href = URL.createObjectURL(blob);element.href = href;element.setAttribute("download", filename);element.style.display = "none";element.click();//调用这个方法来让浏览器知道不用在内存中继续保留对这个文件的引用了。URL.revokeObjectURL(href);element.remove();
};

关于前端下载文件的一些方法:https://blog.csdn.net/weixin_40119412/article/details/126980329

node 利用 excelJS 导出文件

//exportExcel\excel.js
// 导入
import ExcelJS from "exceljs";export default () => {// 创建工作薄const workbook = new ExcelJS.Workbook();// 设置工作簿属性workbook.creator = "System";workbook.lastModifiedBy = "System";workbook.created = new Date(2024, 7, 3);workbook.modified = new Date();workbook.lastPrinted = new Date(2024, 7, 3);// 将工作簿日期设置为 1904 年日期系统workbook.properties.date1904 = true;// 在加载时强制工作簿计算属性workbook.calcProperties.fullCalcOnLoad = true;workbook.views = [{x: 0,y: 0,width: 1000,height: 2000,firstSheet: 0,activeTab: 1,visibility: "visible",},];return workbook;
};
//exportExcel\index.js
import workbookFun from "./excel.js";export default async (data, columns, sheetName = "sheet1") => {const workbook = workbookFun();// 添加工作表const sheet = workbook.addWorksheet(sheetName);sheet.columns = columns;// 将数据添加到工作表中sheet.addRows(data);// 后端 node返回接口直接使用buffer流const bufferData = await workbook.xlsx.writeBuffer();// 浏览器可以利用Blob下载文件 ;node直接返回Blob会提示错误// const blob = new Blob([bufferData], {//   type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'// });return bufferData;
};

利用 exceljs 库和 buffer.Blob 返回数据出错

原因 不支持返回 Blob 格式的数据,只支持字符串类型或 Buffer or Uint8Array

(Use `node --trace-warnings ...` to show where the warning was created)ErrorCaptureStackTrace(err);^TypeError [ERR_INVALID_ARG_TYPE]: The "chunk" argument must be of type string or an instance of Buffer or Uint8Array. Received an instance of Blob

MongoDB 操作

查看集合

show collections;

返回信息

user_table
role_table

删除一个集合


db.user_table.drop();

创建一个集合


db.createCollection('template_table')

项目源码在gitee:https://gitee.com/yanhsama/node-http-demo

window安装mongodb可以查看文章:https://blog.csdn.net/weixin_40119412/article/details/130330496

mongodb的一些常用操作:https://blog.csdn.net/weixin_40119412/article/details/130566375

http://www.15wanjia.com/news/43598.html

相关文章:

  • 如何用网站模板做网站搜索引擎链接
  • 淘宝联盟里的网站推广怎么做百度网盘客服24小时电话人工服务
  • 太原网站建设与维护三只松鼠的软文范例
  • WordPress产品录入seo专业培训seo专业培训
  • 好的响应式网站有哪些厦门seo蜘蛛屯
  • 施工企业市场调查目的与主题主要有()。seo和sem是什么
  • 国外做博彩网站安全吗短链接在线生成
  • 有没有一些网站可以做问卷创建网站花钱吗
  • 8图片这样的网站怎么做最近七天的新闻大事
  • 网站长尾关键词优化如何找外链资源
  • 静态网站培训做网站公司哪家正规
  • 宿迁企业网站建设上海网站建设开发公司
  • 厦门做网页网站的公司快排seo
  • 网站开发团队要几个人网站优化助手
  • 网站建设方案项目背景意义专业seo排名优化费用
  • 建设网站的企业提高基层治理效能
  • 做网站遇到的问题全搜网
  • 东莞北京网站建设价格灰色行业怎么推广引流
  • 中国企业集成网百度ocpc怎么优化
  • 做网站建设公司起名如何让百度收录自己的网站信息
  • 做网站时搜索的代码是什么如何申请域名
  • 定制网站开发商业计划书西安seo培训学校
  • 想开发自己的网站百度在线客服系统
  • 宝塔没有域名直接做网站怎么弄百度贴吧广告投放价格
  • 用div css做网站首页网络宣传的方法渠道
  • 网站访问量咋做怎么做seo网站关键词优化
  • 涿州网站建设网站优化快速排名软件
  • 做网站的分辨率多少泉州百度seo
  • 福田网站建设多少钱怎么开网站详细步骤
  • 如何做阿里巴巴的网站全国培训机构排名前十