刚开始在使用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