const mongodb = require("mongodb")
const mongodCt = mongodb.MongoClient
const ObjectId = mongodb.ObjectId
let open = ({ dbName = "student", collectionName, url = "mongodb://127.0.0.1:27017" }) => {
return new Promise((resolve, reject) => {
mongodCt.connect(url, { useUnifiedTopology: true }, (err, client) => {
if (err) {
reject(err)
} else {
let db = client.db(dbName)
let collection = db.collection(collectionName)
resolve({ collection, client })
}
})
})
}
let findList = ({
collectionName,
dbName = "student",
_page, _limit, _sort
}) => {
return new Promise((resolve, reject) => {
open({ dbName, collectionName })
.then(({ collection, client }) => {
collection.find({}, {
skip: _page * _limit,
limit: _limit,
sort: { [_sort]: 1 }
}).toArray((err, result) => {
if (!err && result.length > 0) {
resolve({
err: 0,
data: result
})
} else {
resolve({ err: 1, msg: "查无数据" })
}
client.close()
})
}).catch(err => {
reject({ err: 1, msg: "数据库链接失败" })
})
})
}
let findDetail = ({
dbName="student",
collectionName,
_id=null
})=>{
return new Promise((resolve,reject)=>{
open({dbName,collectionName})
.then(({collection,client})=>{
if(_id.length === 24){
collection.find({_id:ObjectId(_id)}).toArray((err,data)=>{
if(!err && data.length>0){
resolve({err:0,data:data[0]})
}else{
resolve({err:1,msg:"查询不到数据...."})
}
})
}else{
reject({err:1,msg:"id长度有误..."})
}
})
.catch(err=>reject({err:1,msg:"链接数据库失败...."}))
})
}
exports.open = open
exports.findList = findList
exports.findDetail = findDetail
const express = require("express")
const app = express();
app.listen(3000, () => {
console.log("3000端口正在监听")
})
const mongodb = require("./mongodb")
app.get("/api/user", (req, res) => {
let { _page, _limit, _sort } = req.query;
_page = _page - 1;
_limit = _limit - 0;
_sort = _sort || 'age'
mongodb.findList({
collectionName: 'user',
_page, _limit, _sort
}).then(result => {
res.send(result)
}).catch(err => {
res.send(err)
})
})
app.get("/api/user/:_id", (req, res,next) => {
let { _id } = req.params;
mongodb.findDetail({
collectionName: "user",
_id
}).then(result => res.send(result))
.catch(err => res.send(err))
})