Узел - Mongo DB - Как запросить определенное вложенное поле - PullRequest
1 голос
/ 11 декабря 2019

Вкратце: я настроил сеансовую аутентификацию для моего приложения node-express с mongodb. Если у пользователя уже есть действующий объект сеанса в БД, новый сеанс НЕ должен создаваться. Теперь я хочу сделать запрос для определенного идентификатора пользователя в моей коллекции сеансов.

Коллекция

Коллекция выглядит следующим образом:

{"_id":"HbAE-qMXPWl7C8tDUnC****q8OoEf76vN","expires":{"$date":{"$numberLong":"1576133617190"}},"session":"{\"cookie\":{\"originalMaxAge\":86399999,\"expires\":\"2019-12-12T06:36:29.898Z\",\"secure\":false,\"httpOnly\":true,\"path\":\"/\",\"sameSite\":true},\"user\":{\"uid\":\"5df08a1b8a60c174840d2986\"}}"}

И мой запрос выглядитнапример:

public async compareSessionIds(uid: string, sid: string) {
    //uid is: 5df08a1b8a60c174840d2986 ==> the same as in the entity
    const user: User | null = await this.connectionManager.db('users').collection<User>('sessions').findOne({uid: uid} as any);
    console.log('user found: ', user); // user found:  null
    return user && user._id === sid;
}

Но мой запрос возвращается каждый раз null, поэтому я предполагаю, что мой запрос неверен. Как правильно запросить определенное вложенное поле в mongodb?

1 Ответ

1 голос
/ 11 декабря 2019

Ваш запрос должен быть таким:

.findOne({"session.user.uid": uid});

Потому что uid находится в session.user! Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...