ฉันใช้พังพอนในสคริปต์ที่ไม่ได้หมายถึงการทำงานอย่างต่อเนื่องและฉันกำลังเผชิญกับสิ่งที่ดูเหมือนจะเป็นปัญหาที่ง่ายมาก แต่ฉันไม่สามารถหาคำตอบได้ เพียงแค่ใส่เมื่อฉันโทรไปที่ฟังก์ชั่นพังพอนใด ๆ ที่ส่งคำขอไปยัง MongoD อินสแตนซ์ของฉัน nodejs ไม่เคยหยุดและฉันต้องฆ่ามันด้วยตนเองด้วยพูด Ctrl + c หรือ Program.exit ()
โค้ดมีลักษณะดังนี้:
var mongoose = require('mongoose');
// if my program ends after this line, it shuts down as expected, my guess is that the connection is not really done here but only on the first real request ?
mongoose.connect('mongodb://localhost:27017/somedb');
// define some models
// if I include this line for example, node never stop afterwards
var MyModel = mongoose.model('MyModel', MySchema);
ฉันพยายามเพิ่มการโทรไปที่ mongoose.disconnect () แต่ไม่มีผลลัพธ์ นอกเหนือจากนั้นทุกอย่างทำงานได้ดี (การค้นหาการประหยัด ... )
นี่เป็นปัญหาเดียวกันกับบุคคลนี้อย่างน่าเศร้าที่เขาไม่ได้รับคำตอบใด ๆ : https://groups.google.com/group/mongoose-orm/browse_thread/thread/c72cc1c51c76e661
ขอบคุณ
แก้ไข: ยอมรับคำตอบด้านล่างเนื่องจากมันถูกต้องทางเทคนิค แต่ถ้าใครเคยประสบปัญหานี้อีกครั้งดูเหมือนว่าพังพอนและ / หรือไดรเวอร์ Mongodb ไม่ได้ปิดการเชื่อมต่อจริง ๆ เมื่อคุณถามว่ายังมีคำถามทำงานอยู่หรือไม่
มันไม่จำแม้แต่การตัดการเชื่อมต่อเลย แต่ก็ไม่ได้ทำเมื่อการสืบค้นเสร็จสิ้น มันแค่ทิ้งสายของคุณโดยไม่มีข้อยกเว้นหรืออะไรก็ตามและไม่เคยปิดการเชื่อมต่อ
ดังนั้นคุณมีมัน: ตรวจสอบให้แน่ใจว่าทุกแบบสอบถามได้รับการประมวลผลก่อนที่จะโทรออก () ถ้าคุณต้องการให้มันใช้งานได้จริง