2017-06-07 57 views
0

我在nodejs + express + mongodb中創建示例庫應用程序。當我運行gulp serve命令時,服務器啓動完美。當我轉到特定的mongodb頁面時,它給出錯誤insertMany不是一個函數。數據庫未啓用訪問控制

var express = require('express'); 
var adminRouter = express.Router(); 
var mongodb = require('mongodb').MongoClient; 
var books = [ 
    { 
     title: 'world', 
     genre: 'Lorem Ipsum text changing occured', 
     author: 'Rakesh', 
     read: false 
    }, 
    { 
     title: 'Make of the world', 
     genre: 'Digital India towards occured', 
     author: 'Jumanji', 
     read: false 
    } 
]; 

var router = function (nav) { 
    adminRouter.route('/addBooks') 
     .get(function (req, res) { 
     var url = 'mongodb://127.0.0.1:27017/admin'; 
     mongodb.connect(url, function (err, db) { 
      var collections = db.collections('books'); 
      collections.insertMany(books, 
       function (err, results) { 
        res.send(results); 
        db.close(); 
       } 
      ); 
     }); 
     }); 

    return adminRouter; 
}; 

module.exports = router; 

Mongo cmd screenshots insertMany cmd not working

+0

var collections = db.collections('books');'應該是'.collection'。如'var collections = db.collection('books');'你真的應該使用'db.collection('books',function(err,collection){'爲了捕獲錯誤。 –

+1

截圖來自連接到shell並且與問題中的代碼無關。如果您不希望未經授權的用戶訪問和更改數據庫,那麼您應該「啓用」訪問控制,這是默認的「警告」。 –

+0

圖片在帖子中很有用,但**確保帖子在沒有它們的情況下仍然清晰**,而不是顯示數據格式的屏幕截圖,請直接複製並粘貼或直接輸入實際數據到帖子中 cf http:///meta.stackoverflow.com/questions/303812/discourage-screenshots-of-code-and-orrors –

回答

0

有一個在語法一個錯字管線var collections = db.collections('books');。節點mongo驅動程序只能解釋db.collection()函數,而不是db.collections(),它實際上在語法上是錯誤的。

使用db.collection('books')而不是db.collections('books'),這應該修復這個錯誤。試試吧,讓我知道

+0

感謝它的作品 –

+0

太好了!如果它的工作,請接受答案,以便這可以幫助他人解決問題,因爲這樣:P – Sravan