nodejs操做mongoDB時出現db.collection is not a function的解決方法

剛開始在使用nodejs操做mongoDB進行插入數據時的代碼以下:node

var MongoClient = require('mongodb').MongoClient;
var DB_URL = 'mongodb://127.0.0.1:27017/test';
var insertData = function (db, callback) { //鏈接到表 site var collection = db.collection('site'); //插入數據 var data = {"name":"node","age":18,"addr":"nb","addTime":new Date()}; collection.insert(data, function (err, result) { if (err) { console.log('Error:' + err); return; } callback(result); }); } MongoClient.connect(DB_URL, function (err, db) { if (err) { console.log(err); return; } console.log("鏈接成功!"); insertData(db, function (result) { console.log(result); db.close(); }); });

結果報錯了:db.collection is not a function…git

在網上查詢了一下,發現這是mongoDB版本問題所致使的,上面的寫法是2.x版本的,而我使用的是3.x版,寫法上有變化,有兩種解決方法:一是將mongoDB回退到2.x版本,二是使用3.x版本的寫法。github

下面是我參考 https://www.jianshu.com/p/6883615640f0 後親測成功的3.x版本的寫法:mongodb

var MongoClient = require('mongodb').MongoClient;
var DB_URL = 'mongodb://127.0.0.1:27017/test';

function insertData(db,callback){
    //在mongoDB裏查詢show dbs會出現person
    var person = db.db('person');
    //在person裏查詢show tables會出現student
    var student = person.collection('student');
    var tmp1 = {"name":"node","age":18,"addr":"nb","addTime":new Date()};
    student.insert(tmp1,{safe:true},function(err, result){
        if(err){
            console.log("插入失敗:",err);
            return;
        }
        console.log("插入成功");
        callback(result);
    }); 
}

MongoClient.connect(DB_URL, function(error, db){
    if(error){
        console.log("鏈接失敗:",error);
        return;
    }
    console.log('鏈接成功!');
    insertData(db,function(result){
        console.log(result);
        db.close();
    });
});

還有一種3.x版本的寫法,和官網上(http://mongodb.github.io/node-mongodb-native/3.0/api/)的寫法類似,不過本身沒試過,也貼出來參考吧數據庫

// 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;  

另一種回退到2.x版本的解決方法比較簡單,只須要找到package.json文件,將裏面的修改成:"mongodb": "^2.3.33",而後打開命令行: npm install,更新一下就能夠了。express

相關文章
相關標籤/搜索