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:
Aber wenn ich Mongo überprüfe, sind die Aufzeichnungen definitiv eingefügt:
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?
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 –
Ah, guter Haken, dass extra Parens ist, was das Problem verursacht hat. Vielen Dank! –
Ich werde das als Antwort hinzufügen, damit Sie es auswählen können –