zoukankan      html  css  js  c++  java
  • nodejs运行项目报错TypeError: db.collection is not a function

    nodejs调用mongodb驱动写入数据异常

    nodejs 版本:v8.9.4
    mongodb 版本:3.4.7

    问题描述:

    使用nodejs,连接mongodb,数据写入时提示如下错误:

    $ node insertdb.js
    连接成功![object Object]
    e:	est
    ode_modules\_mongodb@3.0.1@mongodblibmongo_client.js:797
              throw err;
              ^
    
    TypeError: db.collection is not a function
        at insertData (e:	estinsertdb.js:9:25)
        at e:	estinsertdb.js:25:5
        at args.push (e:	est
    ode_modules\_mongodb@3.0.1@mongodblibutils.js:404:72)
        at e:	est
    ode_modules\_mongodb@3.0.1@mongodblibmongo_client.js:255:5
        at connectCallback (e:	est
    ode_modules\_mongodb@3.0.1@mongodblibmongo_client.js:933:5)
        at e:	est
    ode_modules\_mongodb@3.0.1@mongodblibmongo_client.js:794:11
        at _combinedTickCallback (internal/process/next_tick.js:131:7)
        at process._tickCallback (internal/process/next_tick.js:180:9)
    
    

    问题分析:

    1、根据错误提示:TypeError: collection is not a function 说明函数:collection未找到。
    2、从错误堆栈中,定位到node的lib目录,结构如下:
    这里写图片描述
    3、错误堆栈中,仅定位到 mongo_client.js,还没有到数据库一级就出现异常了。
    4、打开文件collection.js,搜索collection方法,找到如下代码示例片段,原来mongodb 3.x版本的库文件与2.x版本的不一样,按照示例修改就可以了:
    这里写图片描述

    示例代码:

    // mongodb 
    // 插入数据
    var MongoClient = require('mongodb').MongoClient;
    var url = 'mongodb://localhost:30000/runoob';
    var dbName = 'runnoob';
    
    var insertData = function(db, callback) {  
        //连接到表 site
        var collection = db.collection('site');
        //插入数据
        var data = [{"name":"菜鸟教程","url":"www.runoob.com"},{"name":"菜鸟工具","url":"c.runoob.com"}];
        collection.insert(data, function(err, result) { 
            if(err)
            {
                console.log('Error:'+ err);
                return;
            }     
            callback(result);
        });
    }
    
    /*连接方式1:错误
    MongoClient.connect(url, function(err, db) {
        console.log("连接成功!" + db);
        insertData(db, function(result) {
            console.log(result);
            db.close();
        });
    });
    */
    
    /* 连接方式2:正确*/
    MongoClient.connect(url, function(err, client) {
        console.log("连接成功!" + client);
    	var db = client.db(dbName)
        insertData(db, function(result) {
            console.log(result);
            client.close();
        });
    });

     
  • 相关阅读:
    支持向量机SVM知识点概括
    决策树知识点概括
    HDU 3081 Marriage Match II
    HDU 3572 Task Schedule
    HDU 4888 Redraw Beautiful Drawings
    Poj 2728 Desert King
    HDU 3926 Hand in Hand
    HDU 1598 find the most comfortable road
    HDU 4393 Throw nails
    POJ 1486 Sorting Slides
  • 原文地址:https://www.cnblogs.com/qianzf/p/14235604.html
Copyright © 2011-2022 走看看