1. 程式人生 > >node.js連線MongoDB資料成功之後,丟擲錯誤,db.collection is not a function

node.js連線MongoDB資料成功之後,丟擲錯誤,db.collection is not a function

node.js程式碼,顯示連線資料庫成功,卻報錯db.collection is not a function

/**
 * Created by 村中長相較好的男子 on 2018/1/3.
 */
//引入mongodb模組,獲得客戶端物件
var MongoClient = require('mongodb').MongoClient;
//連線字串
var DB_CONN_STR = 'mongodb://localhost:27017/gomall';    

//定義函式表示式,用於操作資料庫並返回結果
var insertData = function(db, callback) {  
    //獲得指定的集合 
    var collection = db.collection('users');
    //插入資料
    var data = [{_id:7,"name":'rose',"age":21},{_id:8,"name":'mark',"age":22}];
    collection.insert(data, function(err, result) { 
        //如果存在錯誤
        if(err)
        {
            console.log('Error:'+ err);
            return;
        } 
        //呼叫傳入的回撥方法,將操作結果返回
        callback(result);
    });
};

//使用客戶端連線資料,並指定完成時的回撥方法
MongoClient.connect(DB_CONN_STR, function(err, db) {
    console.log("連線成功!");
    //執行插入資料操作,呼叫自定義方法
    insertData(db, function(result) {
        //顯示結果
        console.log(result);
        //關閉資料庫
        db.close();
    });
});

程式碼確定是沒錯的,連資料庫成功,那麼問題就出在插入操作上,但插入的程式碼檢查了也是沒問題的。最後懷疑是模組出了問題。版本問題。

百度得知:這個錯誤是出在mongodb的庫中,在nodejs裡的寫法和命令列中的寫法不一樣3.0的api已經更新和以前的版本不不一樣,我們在npm中沒指定版本號的安裝就預設安裝的是3.0版本。

下面是我在網上收集的一個3.0的方法,能不能用我沒試過,因為我用的是回滾版本的辦法用老版本來操作。

// 3.0 以上 高版本語法

const express = require('express');
const router = express.Router();
const mongoClient = require('mongodb').MongoClient;
const assert = require('assert');
mongoClient.connect("資料庫地址", function(err, client) { assert.equal(null, err);

// admin 為 資料庫名稱;
const db = client.db("admin");
// PASS 為 資料庫裡面的某一個集合;
const pass = db.collection('PASS');

pass.find({}).toArray(function(err, docs) {

assert.equal(err, null);

console.log(docs);
});

});

module.exports = router;

沒準備好使用新版本在這裡只需要把node_modules中mongodb的版本換為2.3.33vision即可解決;

1、在專案中找到package.json檔案,這個檔案中記錄著我們專案的資訊及引用的模組,我們找到mongodb將其版本2.3.33,就像我圖片中那樣,我原來是3.0.33版本的,圖片是我改正後的版本


2、開啟命令列: npm install,更新一下,我們就可以使用2.3.33版本的mongodb模組了

這時候在執行一下程式碼操作就成功了,成功解決問題。

相關推薦

node.js連線MongoDB資料成功之後錯誤db.collection is not a function

node.js程式碼,顯示連線資料庫成功,卻報錯db.collection is not a function /** * Created by 村中長相較好的男子 on 2018/1/3. *

NodeJS | 連線mongodb資料庫成功之後db.collection is not a function錯誤解決辦法(四)

在nodejs操作mongodb顯示資料庫連線成功之後突然報了db.collection is not a function錯誤,引起這個錯誤的原因是nodejs獲取資料庫表的API寫法不對。(正如NodeJS | 入門篇 (一)提到的,不同版本的API,使用規範有差別)。修改方式如下: var

【NodeJs】連線mongodb資料庫成功之後db.collection is not a function錯誤

在nodejs操作mongodb顯示資料庫連線成功之後突然報了db.collection is not a function錯誤 nodejs程式碼如下: /** * Created by lenovoo on 2018/1/23. */ var express = requ

mongodb TypeError: db.collection is not a function 解決辦法

TypeError: db.collection is not a function 解決辦法 我也是自己踩坑(三個小時)剛剛出來的 在使用 MongoDB 資料庫 collect

jquery.min.js?v=2.1.4:4 Uncaught TypeError: (b.contentType || "").indexOf is not a function

前臺運行 gpo 前臺 add cati json log ont fun 前臺運行PUT時出現錯誤:jquery.min.js?v=2.1.4:4 Uncaught TypeError: (b.contentType || "").indexOf is not a fun

2018-10-18T16:22:46.566+0800 E QUERY [js] TypeError: db.addUser is not a function :

新版的MongoDB已經不支援addUser方法了。  改成createUser了。  db.createUser({user:"zz",pwd:"zz",roles:[{role:"root"}]) 建立一個數據庫新使用者用db.createUser()方法,如果使用者

layer.js錯誤Uncaught TypeError: i is not a function

最初是要寫一個管理後臺來著,專案中需要用到彈出層,但是沒有前端配合,我一個小PHP需要去寫這玩意,怎麼辦呢?查了一些資料,發現layer對我來說還行,文件寫的也比較完全,學習成本不高,就下決心用這個了。但是現實總是會給你潑冷水,剛引入就報了一個莫名其妙的錯誤。 吶,就是這個,我自己一個人在

2018-10-18T16:22:46.566+0800 E QUERY [js] TypeError: db.addUser is not a function :

新版的MongoDB已經不支援addUser方法了。  改成createUser了。  db.createUser({user:"zz",pwd:"zz",roles:[{role:"root"}]) 建立一個數據庫新使用者用db.createUser()方法,如果使用者

MongoDB建立管理員時報錯db.addUser is not a function

一開始是想用下面命令建立一個數據庫管理員的 db.addUser("paranoidyang","pwd") 結果卻報了下面的錯誤 後來谷歌了之後 ,才發現addUser這個方法在MongoD

js錯誤Uncaught TypeError: $(...).datagrid is not a function自己寫的並沒有錯但是一直報這個錯(詳解)

自己寫的jsp程式碼並沒有錯,如圖 但是在瀏覽器中一直報錯 如圖 這個問題搞了半天主要是因為 我引用了eaeasyUi的包 又引用了jquery的包  這就相當於十多歲的你和現在的你 都是一

node.js連線mongoDB資料庫

前面已經講了mongoDB資料庫的安裝和使用,今天來研究一下node.js中如何連線和使用mongoDB資料庫。 方法一:mongoose連線 一、配置mongose 增加mongose類庫 npm install mongoose 二、利用mongoose連線mongoDB

[MongoDB學習筆記-02] Node.js連線MongoDB的兩種方法

MongoDB Node.js驅動程式是被官方所支援的原生Node.js驅動程式,他是至今為止最好的實現, 並且得到了MongoDB官方的支援。MongoDB團隊已經採用MongoDB Node.js驅動程式作為標準方法。 npm install mong

node.js操作json檔案用es6的find方法報錯students.find is not function分享

報錯截圖如上 程式碼是node.js用fs操作json檔案,程式碼沒錯,但是一直報錯。。。 後來找了很久之後發現之前測試刪除功能時,把json檔案的students陣列刪了只剩一條資料了,json檔案把本來應該是陣列格式的資料,如下 :  結果是變成了這樣。。。。

Uncaught TypeError: $(...).tree is not a function at HTMLDocument.<anonymous> 原因是確實js文件

ima ldo 原因 cti 項目 tree bubuko 技術 文件 不管惦記那個頁面都是上面的截圖內容,百度很多,只有一個說的是js有問題,後來經過一番查找,確實是js問題,如下圖 因為在git提交的時候不小心刪掉了, 點擊項目右鍵,出現下圖,

js報錯 Uncaught TypeError: xxxx.each is not a function

each err typeerror span xxx list 報錯 pan 使用 在處理ajax返回的json數組時錯誤的使用了 list.each(function(){ }); 實際上當遍歷json數組是應該使用

js報錯: {(intermediate value)} is not a function at HTMLDocument.

使用立即執行函式的時候,chrome報這個錯誤; const url = {   users: "xxx" }  //沒有;導致報錯 (function () {   //程式碼 })() js用func()方式呼叫函式,函式的定義有: 函式宣告,匿名函式,函式表示式; 立即執行函式

Vue表格複用報錯"TypeError: _self.$scopedSlots.default is not a function"

場景:單頁面做可切換的多報表展示 如圖:每個報表戰術展示不同的資料項,需要隨select的切換,複用對應的table 這樣寫會報錯,並且切換後的table選項沒有達到預期效果 <el-main style="padding:10px;overflow-y:hidden"&g

JS中常見的 “函式名 is not a function錯誤

js中常見的錯誤,例如Uncaught TypeError: x is not a function 其原因除了函式本身有錯之外,還有一種很奇怪的情況:函式本身沒有錯,但是執行時就是不能正常執行。這種情況與javascript的特性有關:變數與函式宣告前置的優先順序。 首

value.getTime is not a function表單儲存後再次進入編輯頁不做修改直接儲存日期便會報錯

#問題具體描述: 表單第一次儲存時,這時表單儲存可以直接成功;進入編輯頁,不修改任何資訊直接點選儲存,便會出現value.getTime is not a function的儲存; #問題解析: 1、第一次儲存時;日期的值是date型別;是可以直接儲存的; 2、第二次儲存時,日期的值

js報錯:****is not a function 的解決方法

1.最簡單的情況就是在html中使用的方法名與js方法名定義的不一致,仔細檢查就ok; 2.在使用js方法form.submit()出現這種報錯的時候,說明在提交表單中的元素中 有設定name=submit 的存在,使得系統混淆,造成報錯! 3.在表單中元素的name和id屬