首先是工程目录:
【说明】
index.js为服务器的入口文件,router.js为路由器文件(负责将用户不同的访问路径redirect到不同的接口上),ObjSchema.js为Node.js的模型文件,规定了数据库中数据集中的数据结构以及对数据库的操作,ObjModel.js为Node.js的模式文件,指定mongoose连接的数据库中的哪一个数据集。
(一)入口文件index.js
var express = require('express') var app = express() app.listen(6666) console.log('Server-test started Success!') var router = require('./router/router.js') app.get('/', router.index) // index Page app.get('/addObj', router.addObj) // add object app.get('/showOne', router.showOne) // Show only one Object by name app.get('/showAll', router.showAll) // show all objects(二)路由器文件router/router.js:
var mongoose = require('mongoose') mongoose.connect('mongodb://localhost/mxd') var Obj = require('../model/ObjModel') exports.index = function(req, res) { res.write('Hello, Welcome to our Index page') res.end() } exports.addObj = function(req, res) { // GET var obj = new Obj({ name: req.query.name, age: req.query.age, sex: req.query.sex, info: req.query.info, price: req.query.price, location: req.query.location }) obj.save(function(err, item) { if(err) { res.end('Add new Object Error!') console.log(err) }else{ res.write('Add new Object Success!') res.write('new Object info : \n' + item) res.end() } }) } exports.showOne = function(req, res) { var name = req.query.name if(name) { Obj.showByName(name, function(err, item) { if(err) { res.write('find item Error') res.end() }else{ res.write('Find Item Success') res.write('result is : \n' + item) res.end() } }) }else{ res.write('Lack of name Info') res.end() } } exports.showAll = function(req, res) { Obj.showAll(function(err, objList) { if(err) { console.log('showAll Obj Error') res.end() }else{ res.write('find All Datas Success') res.write('Allc Datas: \n' + objList) res.end() } }) }【说明】
由于在入口文件index.js中都是使用get方式(app.get())访问,因此此处获得req中的参数的方法为:req.query.name;
(1)若使用post方式:
(2)若使用get方式(app.get()):
获得参数的方式: app.get('/showOne', function(req, res){ req.query.name; req.query.password })
(三)模型文件schema/objSchema.js:
var mongoose = require('mongoose') var ObjSchema = new mongoose.Schema({ name: String, age: Number, sex: String, info: String, price: Number, location: String, createTime: { type: String, default: Date.now() + '' } }) ObjSchema.pre('save', function(next) { this.createTime = Date.now() + '' next() }) ObjSchema.statics = { showAll: function(callBack) { return this.find({}).exec(callBack); }, showByName: function(_name, callBack) { return this.find({name: _name}).exec(callBack); } } module.exports = ObjSchema(四)模式文件model/ObjModel.js:
var mongoose = require('mongoose') var ObjSchema = require('../schema/objSchema') var ObjModel = mongoose.model('test_collection', ObjSchema) module.exports = ObjModel