zoukankan      html  css  js  c++  java
  • node.js连接MongoDB数据库,db.collection is not a function完美解决

    解决方法一、

    mongodb数据库版本回退:

    这个错误是出在mongodb的库中,在nodejs里的写法和命令行中的写法不一样,3.0的api已经更新和以前的版本不不一样,我们在npm中没指定版本号的安装就默认安装的是3.0版本。

    可以参考3.0的api文档:http://mongodb.github.io/node-mongodb-native/3.0/api/

    在项目中找到package.json文件,这个文件中记录着我们项目的信息及引用的模块,就像我图片中那样,我原来是3.1.1版本的,我们找到mongodb将其版本改为2.3.33。

    打开命令行在项目根路径下: npm install,更新一下,我们就可以使用2.3.33版本的mongodb模块了。

    解决方法二、

    nodejs连接mongodb新写法

    1、封装数据库的增删改查的操作并向外暴露

    module.exports = {
    
    	//插入数据
    	insertData : function(db, tableName, insertData, callback) {  
    	    //连接到表 dynamic
    	    var collection = db.collection(tableName);
    	    
    	    collection.insert(insertData, function(err, result) { 
            if(err)
            {
              console.log('Error:'+ err);
              return;
            }     
            callback(result);
    	    });
    	},
    	//查询数据
    	selectData : function(db, tableName, whereStr, callback) {  
        //连接到表  
        var collection = db.collection(tableName);
        collection.find(whereStr).toArray(function(err, result) {
    	    if(err)
    	    {
    	      console.log('Error:'+ err);
    	      return;
    	    }     
    	    callback(result);
    	  });
    	},
    	//更新数据
    	updateData : function(db, tableName, whereStr, updateStr, callback) {  
        //连接到表  
        var collection = db.collection(tableName);
        
        collection.update(whereStr,updateStr, function(err, result) {
          if(err)
          {
            console.log('Error:'+ err);
            return;
          }     
          callback(result);
        });
      },
      //删除数据
      delData : function(db, tableName, whereStr, callback) {  
    	  //连接到表  
    	  var collection = db.collection(tableName);
    	  collection.remove(whereStr, function(err, result) {
    	    if(err)
    	    {
    	      console.log('Error:'+ err);
    	      return;
    	    }     
    	    callback(result);
    	  });
    	}
    }
    

      
    2、引入需要的包

    let MongoClient = require('mongodb').MongoClient;
    //连接字符串
    let DB_CONN_STR = 'mongodb://localhost:27017/gomall';  
    let database = require("./3.0_actiondb");//3.0_actiondb上述的文件名
    let dbName = 'gomall';
    
    //runoob是表的名称
    
    MongoClient.connect(DB_CONN_STR, function(err, client) {
    	    let whereStr = {}
    	    console.log("连接成功!" + client);
    	    let db = client.db(dbName)
    	    database.selectData(db, "runoob", whereStr, function(result) {
    	        console.log(result);
      				res.send(JSON.stringify(result));
    	        client.close();
    	    });
    	});
    

      
    总结:建议使用第二中方法,个人认为应该追随技术的更新,不断学习,不被社会淘汰。

  • 相关阅读:
    poj 2411 Mondriaan's Dream 骨牌铺放 状压dp
    zoj 3471 Most Powerful (有向图)最大生成树 状压dp
    poj 2280 Islands and Bridges 哈密尔顿路 状压dp
    hdu 3001 Travelling 经过所有点(最多两次)的最短路径 三进制状压dp
    poj 3311 Hie with the Pie 经过所有点(可重)的最短路径 floyd + 状压dp
    poj 1185 炮兵阵地 状压dp
    poj 3254 Corn Fields 状压dp入门
    loj 6278 6279 数列分块入门 2 3
    VIM记事——大小写转换
    DKIM支持样本上传做检测的网站
  • 原文地址:https://www.cnblogs.com/detanx/p/nodeMongodb.html
Copyright © 2011-2022 走看看