mongose链接数据库与批插入

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;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值