2016-06-16 10 views
0

Ich fange an zu lernen, Node, Express und Mongodb.MongoDB und Express, Verbindungs-Timeout bei dem Versuch, eine insertMany

In einer meiner ersten Übungen versuche ich einzelne und mehrere Inserts in eine Sammlung namens documents zu tun.

Einzeleinsätze funktionieren:

let express = require('express') 
let app = express() 

let MongoClient = require('mongodb').MongoClient 
let assert = require('assert') 
let url = 'mongodb://localhost:27017/test' 

app.get('/testInsert',(req,res) => { 
    MongoClient.connect(url, (err, db) => { 
     assert.equal(null, err) 
     console.log("Connected to mongo server") 

     let collection = db.collection('documents') 

     // this works fine 
     collection.insertOne({test: 'worked'}, (err, rec) => { 
      assert.equal(null, err) 
      assert.equal(1, rec.insertedCount) 
      console.log('single insert result: ' + rec) 
      db.close(); 
      res.send('single insert result: ' + rec) 
     }) 

    }) 
}) 

Aber wenn ich versuche, viele mir eine Auszeit bekommen einzufügen:

let express = require('express') 
let app = express() 

let MongoClient = require('mongodb').MongoClient 
let assert = require('assert') 
let url = 'mongodb://localhost:27017/test' 

app.get('/testInsert',(req,res) => { 
    MongoClient.connect(url, (err, db) => { 
     assert.equal(null, err) 
     console.log("Connected to mongo server") 

     let collection = db.collection('documents') 

     // This fires 
     console.log('about to start insert many') 
     collection.insertMany([{greeting: 'hi'}, {greeting: 'hey'}, {greeting: 'yo'}]), (err, recs) => { 
      // I never get past here 
      console.log('finished insert many') 
      assert.equal(err,null) 
      assert.equal(3,recs.result.n) 
      assert.equal(3,recs.insertedCount) 
      db.close(); 
      res.send("multi insert result: " + recs) 
     } 
    }) 
}) 

Wenn ich den Endpunkt versuchen schlage ich eine Zeitüberschreitung der Anforderung erhalten: error message

Aber wenn ich Mongo überprüfe, sind die Aufzeichnungen definitiv eingefügt: records inserted

Ich nehme an, ich mache etwas falsch mit dem Mongo-Einsatz, weil ich nie in die erste Zeile meines Rückrufs komme. Gibt es etwas, das ich falsch mache, wenn ich versuche, mehrere Dokumente in Mongo einzufügen?

+1

Ich denke, es gibt einen Syntaxfehler in der Zeile "collection.insertmany"; es sollte kein Closing) nach dem Closing geben. Es schließt den Aufruf von insertMany() und kommt nicht zu den Callbacks –

+0

Ah, guter Haken, dass extra Parens ist, was das Problem verursacht hat. Vielen Dank! –

+0

Ich werde das als Antwort hinzufügen, damit Sie es auswählen können –

Antwort

0

Auf dieser Linie im Code:

"collection.insertMany([{greeting: 'hi'}, {greeting: 'hey'}, {greeting: 'yo'}]), (err, recs) " 

Es sollte kein abschließendes Pars) nach der schließenden Klammer sein]. Ich denke, wenn Sie das beheben, sollte es helfen.

Verwandte Themen