剛開始在使用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