node.js 操作 mongodb

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值