这个例子是在express框架下测试滴。
所以,在express环境下,要满足package.json文件的红色字体部分:
{
"name": "microblog",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"express": "~4.9.0",
"body-parser": "~1.8.1",
"cookie-parser": "~1.3.3",
"morgan": "~1.3.0",
"serve-favicon": "~2.1.3",
"debug": "~2.0.0",
"jade": "~1.6.0",
"ejs": ">= 0.0.1",
"mongodb": "*",
"connect-mongo": "*",
"express-session": "~1.0.4",
"connect-flash": "*",
"mysql":"*"
}
}
setting.js:
module.exports = {
cookieSecret: 'myblog',
db: 'blog',
host: '127.0.0.1',
};
mongodb.js
var setting = require('./setting');
Db = require('mongodb').Db;
Connection = require('mongodb').Connection;
Server = require('mongodb').Server;
module.exports = new Db(setting.db, new Server(setting.host, 27017), {safe: true});
dbData.js
var mongodb = require('./mongodb')
function dbDataSaver(UserData){
this.SaveID = UserData.SaveID;
this.UserID = UserData.UserID;
this.Name = UserData.Name;
this.str_json = UserData.str_json;
this.time = UserData.time;
};
dbDataSaver.prototype.save = function(callback){
var dbData = {
SaveID:this.SaveID,
UserID:this.UserID,
Name:this.Name,
str_json:this.str_json,
time:this.time
};
mongodb.open(function(err,db){
if(err){
console.log("mongodb open err");
return callback(err);
}
db.collection('dbData',function(err,collection){
if(err){
mongodb.close();
return callback(err);
}
collection.insert(dbData,{safe:true},function(err,dbData){
if(err){
mongodb.close();
return callback(err);
}
callback(null,dbData[0]);
});
});
});
};
dbDataSaver.get = function(SaveID,callback){
mongodb.open(function(err,db){
if(err){
return callback(err);
}
db.collection('dbData',function(err,collection){
if(err){
mongodb.close();
return callback(err);
}
collection.findOne({SaveID:SaveID},function(err,dbData){
mongodb.close();
if(err){
return callback(err);
}
callback(null,dbData);
});
});
});
};
dbDataSaver.query = function(UserID,callback){
mongodb.open(function(err,db){
if(err){
return callback(err);
}
db.collection('dbData',function(err,collection){
if(err){
mongodb.close();
return callback(err);
}
collection.find({UserID:UserID}).toArray(function(err,items){
mongodb.close();
if(err){
return callback(err);
}
callback(null,items);
});
});
});
};
module.exports = dbDataSaver;
test.js:
var dbData = require('./dbData')
#测试 get 方法,获取指定条件下的一条数据
dbData.get('1',function(err,dbData){
if(!dbData){
console.log("can not get dbData");
return res.redirect('/');
}
console.log(dbData.UserID)
console.log(dbData.SaveID)
console.log(dbData.Name)
})
####测试query方法,获取指定条件下的多条数据
dbData.query(1,function(err,arr){
console.log(arr);
if(!arr){
console.log("can not get dbdatas");
return res.redirect('/');
}
for(var i=0 ; i <arr.length;i++){
dbData = arr[i];
console.log(dbData.UserID);
console.log(dbData.SaveID);
console.log(dbData.Name);
console.log(dbData.str_json);
var aaa = JSON.stringify(dbData.str_json);
var bbb = JSON.parse(aaa);
console.log(bbb.p);
}
})
#测试save方法,向数据库中插入一条记录
newData = new dbData({
SaveID:10,
UserID :10,
Name:"bloodchilde",
str_json:{"p":20},
time : 20150527
});
newData.save(function(err,newData){
if(err){
console.log("save err");
return res.redirect("/");
}
console.log("save data success");
});
注意事项:
1,查询条件的数据类型不能弄错,例如查询的类型本来是整形,如果你填写字符串就会出错
2,数据字段名不能写错,否则会出现undefined或者直接报错,同样插入数据时字段名要和数据库中的一致,否者插入失败(默认填null)