2015-09-21 2 views
0

Это должна быть ошибка пользователя, но я уменьшил пример, насколько могу, и я просто не могу его обнаружить.Запрос Mongoose зависает после обратного вызова

Здесь я делаю простой запрос, который вызывает обратный вызов с результатом и без ошибок. Однако программа просто зависает потом; он никогда не выходит.

import mongoose from "mongoose"; 

const someSchema = new mongoose.Schema({ 
    name: String 
}); 

const M = mongoose.model("someSchema", someSchema); 

mongoose.connect("mongodb://localhost", err => { 
    console.error("connection error", err); 
    M.find({}, (queryError, result) => console.log("result:", result, "error:", queryError)); 
}); 

Результат:

connection error undefined 
result: [ { _id: 55ffada74fb9958d13ec7c4b, name: 'asdf', __v: 0 } ] error: null 

(программа зависает вместо выхода)

Я уверен, что я упускать из виду что-то на самом деле основной, но я не могу определить его в руководстве, и жонглирование вокруг не помогает. Что действительно странно, так это то, что у меня есть куча более сложных моделей Mongoose, которые работают в другом месте.

  • Mongoose:^4.0.5
  • столпотворение-узел: 5.8.20

ответ

1

Ваша программа будет оставаться открытым до тех пор, пока не будет закрыто соединение MongoDB (однако, это не означает, что она "зависает"). Просто поместите mongoose.disconnect();, когда вы закончите, и скрипт завершится.

mongoose.connect("mongodb://localhost", err => { 
    console.error("connection error", err); // TODO better handle error 
    M.find({}, (queryError, result) => { 
     console.log("result:", result, "error:", queryError); 
     mongoose.disconnect(); 
    }); 
}); 
Смежные вопросы