MongoDB возвращает пустой массив в бессерверном приложении NodeJS

#node.js #mongodb #aws-lambda #serverless-framework #serverless

#node.js #mongodb #aws-lambda #бессерверный фреймворк #бессерверный

Вопрос:

Я пытаюсь получить условия предоставления услуг для приложения, используя AppID, переданный в качестве параметра в URL. URL-адрес должен быть: apps/{appsId}/tos С помощью приведенного ниже кода я получаю AppID через параметры url и ищу в запросе mongo соответствующий идентификатор. Однако, когда я тестирую с postman, я получаю пустой массив. Кто-нибудь может мне помочь?

getAppTos lib

 import MongoClient from '../../libs/mongoClient';

const {
  COLL_TOS,
  DB_NAME,
} = process.env;

export const getAppTos = async (appId) => {
  const client = await MongoClient.connect();
  try {
    const tosbyapp = await client
      .db(DB_NAME)
      .collection(COLL_TOS)
      .find({
        appIds: { $elemMatch: { $eq: appId } },
      }).toArray();
    return tosbyapp;
  } finally {
    client.close();
  }
};
  

Обработчик getAppTos

 import { getAppTos } from '../lib/getAppTos';
import response from '../../libs/httpResponses/response';

export default async (event) => {
  const { appId } = event.pathParameters.id;

  try {
    const results = await getAppTos(appId);

    if (results === false) {
      return response({ code: 404, message: 'tos_not_found' });
    }
    return response({ code: 200, body: results });
  } catch (e) {
    return response({ code: 500, message: e.message });
  }
};
  

бессерверный.yml

 getAppTos:
      handler: handlers/getAppTos.default
      events:
        - http:
            path: apps/{id}/tos
            method: get
            cors: true
            request:
              parameters:
                paths:
                  id: true
  

Пример документа в моей коллекции termsOfServices :
введите описание изображения здесь

Комментарии:

1. 1. перейдите в сеанс CLI (оболочка mongo) и работайте там до тех пор, пока у вас не будет выражения, которое получает необходимый документ в порядке 2. переведите success с 1 на Postman , работая там, пока не заработает http, связанный с Get 3. вернитесь к своему JS Get и, если вы запишите в консоль http-выражение длявыборка в JS, тогда вы должны получить тот же успех, что и в 2 с postman

2. Спасибо @RobertRowntree , я использовал весь этот метод, и я допустил ошибку, когда извлек идентификатор приложения, я поставил фигурные скобки, и мне не нужно было! спасибо, что позволили мне разблокировать мою проблему с помощью логического пути