Mongoose внезапно сломался, не получая обратных вызовов

Это самая странная и самая неприятная проблема, с которой мне еще приходилось сталкиваться в Node.js и Mongoose. Я не знаю, почему это вообще происходит, но ни одна из моих функций модели не выполняется. Например, у меня есть модель:

const UserSchema = new Schema({
    email : {...},
    password: {...},
    etc...

module.exports = UserSchema

Все схемы находятся в собственном файле, а затем превращаются в модели в models/index.js:

const UserSchema = require('./UserModel')
const User = mongoose.model('users', UserSchema)
module.exports.User = User

Есть маршруты к /login и /register, и эти маршруты раньше работали нормально, но теперь кажется, что настоящие вызовы мангуста, такие как findOne, на самом деле никогда не вызываются, и это полностью ставит меня в тупик.

Вот пример того, что я имею в виду:

// This is inside an AuthController, which is called by the Express router
console.info('a')
UserModel.findOne({'email':email}, (error, result) => {
    console.info('b')
    if (error) callback(error)
    else callback(null,result)
})

Теперь я всегда вижу «а» в консоли, но мне никогда не выдается ошибка или результат. Например, «b» никогда не будет напечатано на консоли.

Есть что-то простое, что мне не хватает? Почему он сломался, казалось бы, из ниоткуда? Почему эти функции не вызываются?

Что-нибудь изменилось с тех пор, как это заработало? Кроме того, как вы импортируете модель в контроллер?

James 30.01.2019 01:20

Модель импортирована в контроллер из файла models/index.js, о котором я упоминал в OP. const UserModel = require('../models').User

user9173577 30.01.2019 01:24

Я бы предложил начать с проблем с подключением к БД. Это единственная причина, которая приходит на ум.

Estus Flask 30.01.2019 01:34

Разве это не должно по крайней мере вызвать ошибку и вызвать один из моих обратных вызовов? Я использовал Mlab для тестирования, и они не упали. Это просто такая странная проблема для меня

user9173577 30.01.2019 01:43

Итак, @estus, ваш комментарий меня заинтересовал, поэтому я console.infoged mongoose.connection.readyState. Оказывается, когда модуль mongoose-seeder, который я написал, закрывает свое соединение, он также закрывает исходное соединение. Тем не менее удивлен, что это не приводит к ошибке.

user9173577 30.01.2019 01:47

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

Estus Flask 30.01.2019 01:56
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
6
25
0

Другие вопросы по теме