0
私はnode、express、およびmongodbを学び始めています。MongoDBとexpress、insertManyを試みるときの接続タイムアウト
私が始めた練習のうちの1つでは、documents
というコレクションに1つまたは複数の挿入をしようとしています。
シングル挿入が正常に動作:
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)
})
})
})
しかし、私は多くを挿入しようとすると、私はタイムアウトを取得:
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)
}
})
})
私はエンドポイントを打ってみたとき、私は要求タイムアウトを取得:
をしかし、mongoをチェックすると、レコードが確実に挿入されます。
私は自分のコールバックの最初の行に到達しないので、私はmongoの挿入に何か間違っていると仮定しています。 mongoに複数のドキュメントを挿入しようとしたときに間違っていることがありますか?
あなたのコード内でこの行で
"collection.insertmany"という行に構文エラーがあると思います。閉鎖後はないはずです)。それはinsertMany()への呼び出しを終了し、コールバックには戻りません –
ああ、良いキャッチ、その余分な括弧は問題の原因となっています。ありがとう! –
私はそれを答えとして追加して、それを選ぶことができます –