学习了mongoDB可以学习mongoose。他们的关系就相当于js于jq的关系一样。
利用npm install mongoose --save
来安装mongoose。
在后端的模块中建立goods.js文件,并引入mongoose。用来创建与数据库相关的对象。
const mongoose = require("mongoose");//引入mongoose
const Schema = mongoose.Schema;//调用Schema的api用来创建对象。
const productSchema = new Schema({
"productId": {type:String},
"productName": String,
"salePrice": Number,
"productImage":String
});//创建productSchema对象,对象的属性要和数据库中的参数相对应。
module.exports = mongoose.model('Good',productSchema);//暴露出对象接口。\n
此处的Good会自动与数据库中的goods链接。一定是goods。如果不是goods。需要改写为
module.exports = mongoose.model('Good',productSchema,'mongoName')//mongoName为数据集合的名字。
在routes文件夹中建立路由goods.js,用来相应http跳转,和数据的链接。
var express = require("express");//利用express的Router()api来创建路由。
var router = express.Router();
var mongoose = require("mongoose");
var Goods = require("../models/goods");//引入之前创建的后端数据对象。
// 链接数据库。(通过账号密码去链接。)
// mongoose.connect('mongodb://root:123456@127.0.0.1:27017/demo',{ useNewUrlParser: true ,useUnifiedTopology: true})
mongoose.connect('mongodb://127.0.0.1:27017/demo',{ useNewUrlParser: true ,useUnifiedTopology: true});
//数据库链接的一个状态监控。
mongoose.connection.on("connected",()=>{
console.log("connected success....")
})//链接。
mongoose.connection.on("error",()=>{
console.log("connect on error.....")
})//链接错误
mongoose.connection.on("disconnected",()=>{
console.log("disconnected is fail.....")
})//断开连接
//响应get请求。Goods.find({},()=>{}),查询并且执行回调函数。
router.get("/",(req,res,next)=>{
Goods.find({},(err,doc)=>{
if(err) {
res.json({
status: '1',
msg: err.message
})
}else{
res.json({
status: '0',
msg:'',
result:{
count: doc.length,
list: doc
}
})
}
})
})
module.exports = router;//输出router接口。
在app.js中配置一级路由goodsRouter.
当访问“/goods”的时候,执行app.use(’/goods’,goodsRouter)。
然后执行"./routes/goods"的文件做出响应。
由于前端的端口是8080,后端的端口是3000,需要做一个跨域代理处理。
代理处理在前端模块config文件夹的index.js中处理。
proxyTable:{
"/goods":{
target:'http://127.0.0.1:3000',
changeOrigin:true,
secure:true,
pathRewrite:{
'^goods':''
}
},
}
此时访问http://localhost:8080/goods 就可以看到响应了。
思路整理:
1、创建与数据库相对应的对象模型,用来映射到数据库mongoose.Schema。
2、利用mongoose.connect来链接数据库。
3、利用express的Router来创建路由。
4、在app.js中设置一级路由。
5、在config的index.js中设置跨域代理。
然后就可以执行了。