Аргумент типа 'match' не может быть назначен параметру типа any [] - nodejs / mongoose - PullRequest
0 голосов
/ 14 апреля 2020

Мой запрос работает в RoboMon go, но когда я создаю его в моей среде nodeJs, я получаю исключение.

Ниже приведен мой код

Функция репозитория

public find = async (account: any): Promise<any> => {
  return PromoTypes.aggregate(
    {
      $match: { account: { $in: account } }
    },
    {
      $group: {
        _id: '$account',
        data: {
          $push: { _id: '$_id', description: '$description', iteration: '$iteration' }
        }
      }
    }
  );
};

Сервисный файл, вызывающий вышеуказанное хранилище. function

AccountService.ts

public accountService = async (accountid: string): Promise<any> => {
 //accounttypes is an array constructed to pass to the repo, it has more business logic about construction which I have not included in this code. But the object would be as below

 accounttypes = ["first,second"]
 let accountDetails = await AccountRepo.find(accounttypes);
}

Ниже приведена ошибка, которую я получаю.

 Argument of type '{ $match: { account: { $in: any; }; }; }' is not assignable to parameter of type 'any[]'.   Object literal may only specify known properties, and '$match' does not exist in type 'any[]'.ts(2345)

То, что я пытался

Я пытался изменить тип обещания на следующие типы

 1. public accountService = async (accountid: string): Promise<any[]> =>{
 2. public accountService = async (accountid: string): Promise<Array<Object>> => {
 3. public accountService = async (accountid: string): Promise<Object> => {

Ни один из вышеперечисленных подходов не работает для устранения проблемы.

1 Ответ

0 голосов
/ 14 апреля 2020

вам нужно передать массив в aggregate конвейер

public find = async (account: any): Promise<any> => {
  return PromoTypes.aggregate([
    {
      $match: { account: { $in: account } }
    },
    {
      $group: {
        _id: '$account',
        data: {
          $push: { _id: '$_id', description: '$description', iteration: '$iteration' }
        }
      }
    }
  ]);
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...