我在一個腳本中使用貓鼬並不意味着連續運行,而且我面對的似乎是一個非常簡單的問題,但我找不到答案;簡單地說,一旦我調用任何發送請求到mongodb的mongoose函數,我的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驅動程序在您詢問是否仍有查詢正在運行時並未實際關閉連接。
它甚至完全不記得斷開連接調用,它在查詢完成運行後不會執行;它只是放棄你的調用,不會拋出任何異常,也不會真正關閉連接。
所以你有它:確保每個查詢已被處理之前調用disconnect()如果你想它實際工作。
有沒有辦法做到這一點,只是從導入模型?下面的答案都不起作用:\ – Antoine 2016-02-04 03:29:30