mongose链接数据库与批插入

来源:互联网 发布:linux上telnet 编辑:程序博客网 时间:2024/06/06 04:34

1.数据库链接

最近在写爬虫程序进行抓包,使用mongodb数据库的过程中遇到数据库链接的问题。

因为习惯了以前使用mysql时关闭数据库链接的习惯,不太了解Mongodb如何操作数据库链接。

加上我使用的是mongooes这个NPM模块进行数据库操作。

官方的示例是使用

var M = require('mongoose');M.connect('mongodb://admin:411411411@kahana.mongohq.com:10043/blog');

类似这样的代码段

但是例如当我在User.js 和Diary.js中都加人对应代码,就发现会报数据库链接错误。

查阅资料后,在stackoverflow发现,mogoooes对应一个数据库只要进行一次链接,对应多个数据库才需要进行多次链接

最终的解决方案是新建一个db.js,导出数据库链接,每次需要就require这个模块

var M = require('mongoose');M.connect('mongodb://admin:411411411@kahana.mongohq.com:10043/blog');// reference to the database connection 为这个连接创建一个引用var db = M.connection;// expose to modules that require database.js 把这个引用暴露给引用 database 模块的其他模块module.exports = db;
2.批插入

mongodb有个批插入的功能,使用mongooes后也想实现,最后查阅文档总算成功了

这里附一个完整的Model

/** * Created by Administrator on 14-8-8. */var mongoose = require('mongoose');var db = require('./db.js');var gooditemSchema = new mongoose.Schema({    iid:String,    status: String,    date: String,    pv: String,    url : String,    name :String,    owner :String}, {    collection: 'gooditems'});var GooditemModel = mongoose.model('Gooditem', gooditemSchema);function Gooditem(gooditem) {    this.iid=gooditem.iid;    this.name = gooditem.name;    this.pv =gooditem.pv;    this.status = gooditem.status;    this.url = gooditem.url;    this.date = gooditem.date;    this.owner = gooditem.owner;};//保存Gooditem.prototype.save = function(callback) {    var gooditem= {        iid:this.iid,        name:this.name,        pv :this.pv,        status : this.status,        url : this.url,        date : this.date,        owner : this.owner    };var Model = new GooditemModel(gooditem);     Model.save(function (err, gooditem) {        if (err) {            return callback(err);        }        callback(null, gooditem);    });};
//查Gooditem.get = function(iid, callback) {    gooditemModel.findOne({iid: iid}, function (err, gooditem) {        if (err) {            return callback(err);        }        callback(null, gooditem);    });};
//改Gooditem.update = function(iid,img,callback){    var conditions = {iid : iid};    var update     = {$set : {img: img}};    var options    = {upsert : true};    gooditemModel.update(conditions, update, options, function(error,data){        if(error) {            console.log(error);        } else {            callback( 'update ok!');        }    });}
//批插入Gooditem.batch = function(array,callback){    GooditemModel.create(array,function(err){        if(err){            callback('error')        }        else{            callback("ok")        }    })}module.exports = Gooditem;



0 0