数据库的封装和配置
module/config.js
var dbUrl = 'mongodb://localhost:27017/your-db-name'; // 这里填写连接你数据库的配置url
module.exports={
dbUrl:dbUrl
}
module/db.js
// 这里是封装操作数据库的方法
var config = require('./config.js');
var MongoClient=require('mongodb').MongoClient;
var ObjectID = require('mongodb').ObjectID; /*查找_id*/
var dbUrl =config.dbUrl;
//封装连接数据库的方法
function _connect(callback){
MongoClient.connect(dbUrl,function(err,db){
if(err){
console.log('数据库连接失败');
console.log(err);
return;
}
callback(db);
})
}
exports.ObjectID = ObjectID;
/*
* json1 条件
* json2 列数
* json3 配置信息
*
*/
exports.find = function(collectionName,json1,json2,json3,callback){
if(arguments.length == 3){
var cb=json2;
var col={}; /*查询的列*/
var skip=0;
var limit=0;
}else if(arguments.length==4){
var cb=json3;
var col=json2; /*查询的列*/
var skip=0;
var limit=0;
}else if(arguments.length==5){
var cb = callback;
var col = json2; /*查询的列*/
//json3={
// page,
// pageSize
//}
var limit=json3.pageSize || 10; /*如果pageSize 每页10条*/
var skip=json3.page? (json3.page-1)*limit : 0; /*page每页传显示第一页*/
}else{
console.log('传入参数错误');
return;
}
_connect(function(db){
var result=db.collection(collectionName).find(json1,col).skip(skip).limit(limit);
result.toArray(function(err,data){
db.close();
cb(err,data);
})
})
}
// 增加数据 db.insert("user",{"name":"user_number"},function(){})
exports.insert = function(collectionName,json,callback){
_connect(function(db){
db.collection(collectionName).insertOne(json,function(err,result){
db.close();
callback(err,result);
})
})
}
// 更新数据 db.update('user',{"id":123},{'name':"user_number"},function(){})
exports.update=function(collectionName,json1,json2,callback){
_connect(function(db){
db.collection(collectionName).updateOne(json1,{
$set:json2
},function(err,result){
db.close();
callback(err,result);
})
})
}
//封装删除的方法
exports.remove = function(collectionName,json,callback){
_connect(function(db){
db.collection(collectionName).removeOne(json,function(err,result){
db.close();
callback(err,result);
})
})
}
exports.count = function(collectionName,json,callback){
_connect(function(db){
db.collection(collectionName).count(json,function(err,data){
callback(err,data)
})
})
}
后端程序的设计
var express = require('express');
var app=express();
var DB=require('./module/db.js');
var server = require('http').Server(app);
var io = require('socket.io')(server);
app.set('view engine','ejs');
app.use(express.static('public'));
app.get('/',function(req,res){
//res.send('首页');
res.render('index');
})
server.listen(3000,'127.0.0.1');
io.on('connection', function (socket) {
console.log('建立链接')
socket.on('message',function(data){
console.log(data)
//socket.emit('servermessage',msg);
var msg = data.msg || ''; /*获取客户端的数据*/
//去服务器查询数据
DB.find('article',{'title':{$regex:new RegExp(msg)}},{'title':1},function(err,data){
// console.log(data);
socket.emit('servermessage',{
result:data
});
})
})
});
views/index.ejs
<script src="/jquery-1.11.3.min.js">script>
<script src="http://127.0.0.1:3000/socket.io/socket.io.js">script>
<div class="box">
<div class="list">
<div id="list">
div>
<div class="footer" id="footer">
div>
div>
<div class="message">
<input type="text" id="msg" />
<input type="button" id="send" value="发送"/>
div>
div>
<script>
$(function(){
var socket = io.connect('http://127.0.0.1:3000/');
socket.on('servermessage',function(data){
if(data.result.length) {
var str=''
;
for(var i=0;i<data.result.length;i++){
str+='' +data.result[i].title+'';
}
str+='';
}else{
var str='没有找到您要的数据,请联系人工客服
'
}
$('#list').append(str);
$('#footer').get(0).scrollIntoView();
})
var username = 'user_number' + Math.floor(Math.random()*10);
//群聊功能--聊天室
$('#send').click(function(){
var msg = $('#msg').val();
socket.emit('message',{
'username':username,
'msg':msg
});
$('#list').append(`
${username}: ${msg}`);
$('#msg').val();
})
})
script>