Мангуста, получая все из коллекции, возвращает пустой список - PullRequest
0 голосов
/ 01 сентября 2018

Я создал новую коллекцию в своем проекте и следовал тому же синтаксису для извлечения всех пользователей, чтобы извлечь все из этой коллекции, но я по какой-то причине получаю пустой массив или список. Может кто-нибудь, пожалуйста, дайте мне знать, почему это так, как я довольно плохо знаком с MongoDB. ниже мой код. служба вызывается, когда я ставлю console.log перед запросом, и она вызывается. Кроме того, сохранение данных в БД также работает, просто получить все, что у меня возникают проблемы. В коллекции есть только одно поле - номер счета.

На службе у меня

async function getAll() {
    return await accountdb.find({});
}

Контроллер

function getAll(req, res, next) {
    accountdbService.getAll()
        .then(account => res.json(account))
        .catch(err => next(err));
}

в передней части у меня есть

 getAll() {
    return this.http.get<account[]>(`${environment.apiUrl}/account`);
  }

и, наконец, в компоненте

ngOnInit() {
    this.loadAllAccounts();
  }

  private loadAllAccounts() {
    this.AccountService.getAll().pipe(first()).subscribe(account => {
      this.accounts = account;
      console.log(this.accounts);
    });
    console.log(this.accounts);

}

ответ почтальона при вызове api:

[
    {
        "_id": "5b89e647e1e6540ac28d68b1",
        "logDataInput": "admin changed the status of user test2 to manager",
        "__v": 0,
        "id": "5b89e647e1e6540ac28d68b1"
    },
    {
        "_id": "5b89e648e1e6540ac28d68b2",
        "logDataInput": "admin changed the status of user test2 to User",
        "__v": 0,
        "id": "5b89e648e1e6540ac28d68b2"
    },
    {
        "_id": "5b8a2a6b16206e0cae8c71ba",
        "logDataInput": "admin deactivated user test2",
        "__v": 0,
        "id": "5b8a2a6b16206e0cae8c71ba"
    }
]

сетевой инструмент 2 api вызывает картинку

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

Причина в том, что функция getAll() является асинхронной, то есть код непосредственно после может быть выполнен до того, как функция subscribe будет.

Похоже, ваш массив устанавливается, но, проверяя его вне подписки, вы проверяете его до того, как будет установлен.

0 голосов
/ 01 сентября 2018

Похоже, вы отправляете неверную переменную в ответ от функции getAll.

    .then(logTrack => res.json(account)

Измените это на

    .then(logTrack => res.json(logTrack)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...