const express = require("express");
const mongoose = require("mongoose");
const cors = require("cors");
const app = express();
// // parse application/x-www-form-urlencoded 使用express内置 body-parser中间件
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
// app.use(express.static("./"));
// app.use((req, res, next) => {
// // 在这里设置响应头,允许资源共享
// res.setHeader("Access-Control-Allow-Origin", "*");
// next();
// });
app.use(cors());
app.listen(4399, function () {
console.log("服务器开启监听4399端口...");
mongoose.connect('mongodb://localhost/xhua-mobile-bs', {
useNewUrlParser: true,
useUnifiedTopology: true
});
});
mongoose.connection.on("open", function () {
console.log("数据库链接成功!");
/*
创建一个数据结构
1. nickname String
2. username Number
3. password String
4. rank number (0-2)
*/
const user = new mongoose.Schema({
nickname: {
type: String,
required: true
},
username: {
type: String,
unique: true,
required: true
},
password: {
type: String,
required: true
},
rank: {
type: Number
},
sex: {
type: Number
},
age: {
type: Number
}
}, { collection: "user", versionKey: false });
const phoneGrade = new mongoose.Schema({
name: {
type: String,
unique: true,
required: true
},
CPU: {
type: Number,
required: true
},
GPU: {
type: Number,
required: true
},
MEM: {
type: Number,
required: true
},
UX: {
type: Number,
required: true
},
grade: {
type: Number
}
}, { collection: "phoneGrade", versionKey: false });
const phoneSocGrade = new mongoose.Schema({
name: {
type: String,
unique: true,
required: true
},
CPU: {
type: Number,
required: true
},
GPU: {
type: Number,
required: true
},
grade: {
type: Number
}
}, { collection: "phoneSocGrade", versionKey: false });
const information = new mongoose.Schema({
title: {
type: String,
required: true
},
time: {
type: String,
required: true
},
content: {
type: Array,
required: true
},
flag: {
type: Number,
required: true
},
imgUrl: {
type: String,
required: true
}
}, { collection: "information", versionKey: false });
// const order = new mongoose.Schema({
// userId: {
// type: Number
// },
// shopId: {
// type: Number
// },
// date: {
// type: Number
// },
// shopName: {
// type: String
// },
// shopImg: {
// type: String
// },
// float_delivery_fee: {
// type: Number
// },
// address: {
// type: Object
// },
// foods: [foodItem]
// }, { collection: "ordersCar", versionKey: false });
const userModel = mongoose.model("user", user);
const phoneGradeModel = mongoose.model("phoneGrade", phoneGrade);
const phoneSocGradeModel = mongoose.model("phoneSocGrade", phoneSocGrade);
const informationModel = mongoose.model("information", information);
// const myModel2 = mongoose.model("ordersCar", order);
/**
* effect: 获取数据对比指标
* method: get
*/
app.get("/getIndex", function (req, res) {
const { type } = req.query;
if (type === "phone") {
res.json({
message: "查询成功",
data: ["CPU", "GPU", "MEM", "UX"]
})
} else if (type === "chip") {
res.json({
message: "查询成功",
data: ["CPU", "GPU"]
})
}
})
/**
* effect: 获取对比名称
* method: get
*/
app.get("/getContrastArr", function (req, res) {
const { name } = req.query;
const arr = [];
if (name === "phone") {
phoneGradeModel.find((error, result) => {
result.forEach(item => {
arr.push(item.name);
})
if (!error) {
res.json({
message: "查询成功",
data: arr
})
} else {
res.json({
message: "查询失败",
data: error
});
}
// console.log(result);
})
} else if (name === "chip") {
phoneSocGradeModel.find((error, result) => {
result.forEach(item => {
arr.push(item.name);
})
if (!error) {
res.json({
message: "查询成功",
data: arr
})
} else {
res.json({
message: "查询失败",
data: error
});
}
// console.log(result);
})
}
})
/**
* effect: 查询所有用户
* method: get
*/
app.get("/allUsers", function (req, res) {
// 向数据库请求所有数据并返回
userModel.find(function (error, result) {
const dataArr = [];
let num = 0;
result.sort((a, b) => a.rank - b.rank)
for (let i = 0; i < result.length; i++) {
let theData = result[i];
const { username, nickname, rank } = theData;
const obj = {
username,
nickname,
rank: rank === 0 ? "站长" : (rank === 1 ? "管理员" : "普通用户"),
key: num++
}
dataArr.push(obj);
}
if (!error) {
res.json({
message: "查询成功",
data: dataArr
});
} else {
res.json({
message: "查询失败",
data: error
});
}
});
});
/**
* effect: 设置管理员
* method: get
*/
app.get("/empower", (req, res) => {
const { username } = req.query;
userModel.updateOne({ username }, { $set: { rank: 1 } }, (error, result) => {
if (!error) {
userModel.find((error, result) => {
if (!error) {
result.sort((a, b) => a.rank - b.rank);
const dataArr = [];
let num = 0;
for (let i = 0; i < result.length; i++) {
let theData = result[i];
const { username, nickname, rank } = theData;
const obj = {
username,
nickname,
rank: rank === 0 ? "站长" : (rank === 1 ? "管理员" : "普通用户"),
key: num++
}
dataArr.push(obj);
}
res.json({
code: 1,
message: "修改成功",
data: dataArr
})
}
})
} else {
res.json({
code: -1,
message: "接口出现问题"
})
}
})
})
/**
* effect: 注册新用户
* method: post
*/
app.post("/register", (req, res) => {
console.log(req.body);
const { nickname, username, password } = req.body;
// 注册的时候,账号、昵称唯一
userModel.find({ username }, (error, result) => {
if (!error) {
if (result.length !== 0) {
// 可以查询到,说明已经注册过了。
res.json({
code: 3,
message: "该账号已经注册,请前往登录"
});
} else {
userModel.find({ nickname }, (error, result) => {
if (!error) {
if (result.length !== 0) {
// 可以查询到,说明已经昵称占用了。
res.json({
code: 4,
message: "该昵称已被占用,请重新选择昵称"
});
} else {
// 查询不到,说明没有注册过,可以进行注册
userModel.create({
nickname,
username,
password,
rank: 2,
sex: null,
age: null
},
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
人工智能-项目实践-网站设计-手机硬件测评网站的设计与实现-后端.zip (3个子文件)
xhua-middleground-master
yarn.lock 23KB
app.js 26KB
package.json 197B
共 3 条
- 1
资源评论
博士僧小星
- 粉丝: 1896
- 资源: 5877
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功