2017-06-17 6 views
3

Ich versuche, Daten von POSTMAN zu einer externen Datenbank, die ich auf mLab erstellt habe, aber ich erhalte den Fehler db.collection ist keine Funktion.Knoten js & mongoDB - TypeError: db.collection ist keine Funktion

Es gibt eine ähnliche Frage Thread, aber die Antwort ist unvollständig und speichert keine Schlüssel/Werte, die ich Postbote in mLab. Der Code, den ich versuche, Arbeit zu machen, ist aus diesem Tutorial: https://medium.freecodecamp.com/building-a-simple-node-js-api-in-under-30-minutes-a07ea9e390d2

Mein Code:

Server.js

const express = require('express'); // Load routes application 
const MongoClient = require('mongodb').MongoClient; //Load database connection application 
const db = require('./config/db'); 
const app = express(); // Assign express app a variable 
const port = 8000; //Set local port value for server 
const bodyParser = require('body-parser'); // **This has to come BEFORE routes 
var assert = require('assert'); // ? 
var databaseURL ='mongodb://external:[email protected]:23312/soundfactory'; 


app.listen(port,() => { 
    console.log('') 
    console.log('We are live on ' + port); 
    console.log('') 
}); 


MongoClient.connect(databaseURL, function(err, db) { 
    assert.equal(null, err); 
    console.log("API has succesfully connected to Sound Facotry mlab external database."); 
    console.log('') 
    db.close(); 
}); 


app.use(bodyParser.urlencoded({ extended: true })) 
require('./app/routes')(app, {}); //Must come AFTER express w/ body parser 

db.js

module.exports = { 
    url : 'mongodb://external:[email protected]:23312/soundfactory' 
}; 

Index. js

const noteroutes = require('./note_routes'); 
module.exports = function(app,db) 
{ 
    noteroutes(app,db); 
}; 

note_routes.js

module.exports = function(app, db) { 
    app.post('/notes', (req, res) => { 
    const note = { text: req.body.body, title: req.body.title }; 
    db.collection('notes').insert(note, (err, result) => { 
     if (err) { 
     res.send({ 'error': 'An error has occurred' }); 
     } else { 
     res.send(result.ops[0]); 
     } 
    }); 
    }); 
}; 

teilweise richtigen Code

server.js (Code, werfen & nicht die db.collections Fehler wie meine ursprüngliche server.js Datei teilweise funktioniert)

const express = require('express'); 
const MongoClient = require('mongodb').MongoClient; 
const bodyParser = require('body-parser'); 
const db = require('./config/db'); 
const app = express(); 
const port = 8000; 
app.use(bodyParser.urlencoded({extened:true})); 
MongoClient.connect(db.url,(err,database) =>{ 
if (err) return console.log(err) 
//require('./app/routes')(app,{}); 
//check below line changed 
require('./app/routes')(app, database); 
app.listen(port,() => { 
    console.log("We are live on"+port); 
}); 
}) 
+0

Sie sind ein leeres Objekt von server.js zu index.js vorbei dann note_routes.js Als db param, wo Sie versuchen, es als db.collection zu verwenden, aber die db ist ein leeres Objekt, hat es keine Auflistungseigenschaft. – Molda

+0

versuchen Sie, die Abhängigkeiten in package.json für das mongodb zu überprüfen –

Antwort

-1

Änderung dieser require('mongodb').MongoClient;

3

den node_modules Ordner entfernen und mongodb Version Ihrer package.json

"mongodb": "^2.2.33" 

und laufen unter Code ändern:

npm install