node.js 操作 mongodb

来源:互联网 发布:数据可视化常用工具 编辑:程序博客网 时间:2024/05/18 15:57

这个例子是在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)


0 0
原创粉丝点击