#StuInfoSystem
##系统简介
前端使用HTML+CSS+JS实现,服务器端使用Node.js+MongoDB数据库 (采用express4.x框架)
服务器端利用express-restify-mongoose 模块自动生成对应数据库相应表的restful API,由前端发起Ajax请求调用
##启动方法
首先通过git clone 下载本程序 用命令行在根目录下执行:
npm install
安装完依赖包后 执行:
node ./bin/www
开始运行本程序
##使用方法
前端通过发送Ajax请求进行对数据库的增删修查操作。具体操作方法可以查看express-restify-mongoose的详细文档。这里列举几个常用场景:
比如当前数据库有一个名为absenteeism的缺勤表。我们通过浏览器访问http://localhost:6060/api/v1/absenteeism 即可看到当前表中存储的信息(JSON格式)。其实这就是一个GET请求操作。
假设我要根据MongoDB的_id字段顺序查找absenteeism的所有人员信息,可以发起如下Ajax请求:
$.ajax({
url:'http://localhost:6060/api/v1/absenteeism?sort=_id',
type:'GET',
success:function(data){
console.log(data)
}
});
此时返回的data就是所有人员信息的js数组,现在可以对这些数据进行自由发挥了,比如通过遍历的方式将其append到html页面上。
又假设我要往数据库里新建一条信息,此时要用到POST方法,并把需要新建的信息组成一个js对象 比如:
var postData = {
semester:$("#semester").val(),
week:$("#week").val(),
recordDate:$("#recordDate").val(),
stuNumber:$("#stuNumber").val(),
stuName:$("#stuName").val(),
stuClass:$("#stuClass").val(),
classType:$("#classType").val(),
date:$("#date").val(),
lesson:$("#lesson").val(),
teacher:$("#teacher").val(),
classroom:$("#classroom").val(),
lessonTime:$("#lessonTime").val(),
remark:$("#remark").val()
}
然后在发Ajax请求的方法中,将其转为JSON数据发出去:
$.ajax({
url:'http://localhost:6060/api/v1/absenteeism',
type:'POST',
contentType:'application/json',
data:JSON.stringify(postData),
success:function(data){
console.log("添加成功");
console.log(data);
}
})
此时返回的data则是你刚刚插入的那条信息,通常是一个object类型的数据。
此外,我们还可以通过PUT方法进行对数据的修改,DELETE方法进行对数据的删除。
如果在查询过程中要增加一些查询条件,可以在地址后加上query关键字进行查询,如官方文档所写:
GET /Customer?query={"name":"Bob"}
GET /Customer?query={"name":{"$regex":"^(Bob)"}}
GET /Customer?query={"name":"~^(Bob)"}
GET /Customer?query={"age":{"$gt":12}}
GET /Customer?query={"age":">12"}
GET /Customer?query={"age":{"$gte":12}}
GET /Customer?query={"age":">=12"}
GET /Customer?query={"age":{"$lt":12}}
GET /Customer?query={"age":"<12"}
GET /Customer?query={"age":{"$lte":12}}
GET /Customer?query={"age":"<=12"}
GET /Customer?query={"age":{"$ne":12}}
GET /Customer?query={"age":"!=12"}
如果要按分页进行查询 则需要用到limit和skip关键字了:
GET /Customer?skip=10&limit=10
……
##建表方法
如果想要自己在数据库中新建表,需要自己编写schema和对应model。具体写法可参考目录下的schemas和models文件夹下的文件
所谓schema 指的是表的结构,即声明有哪些字段,它是什么类型之类的信息。然后通过model将其实例化。
最后在app.js文件中 通过**restify.serve(router,modelName);**来产生表的API地址。例如:
app.js:
var express = require('express');
var restify = require('express-restify-mongoose');
var app = express();
var router = express.Router();
var absenteeismModel = require('./models/absenteeism');
restify.serve(router,absenteeismModel);
app.use(router);