首页 > 解决方案 > 将数组作为查询字符串参数传递 node.js

问题描述

如何将数组作为查询字符串参数传递?

我尝试了多种方法,包括将其添加到路径中,但我无法在后端拉出数组。

如果我对数组进行硬编码,它可以正常工作,但是当我尝试将数组从前端传递到后端时,它不能正常工作。

谁能指出我正确的方向?

前端

  function loadJob() {
    return API.get("realtorPilot", "/myTable/ListJobs", {
  'queryStringParameters': {
    radius,
    availableServices,
  }
});

后端

import * as dynamoDbLib from "./libs/dynamodb-lib";
import { success, failure } from "./libs/response-lib";

export async function main(event, context) {

const data = {
  radius: event.queryStringParameters.radius,
  availableServices: event.queryStringParameters.availableServices,
};

// These hold ExpressionAttributeValues
const zipcodes = {};
const services = {};

data.radius.forEach((zipcode, i) => {
  zipcodes[`:zipcode${i}`] = zipcode;
});

data.availableServices.forEach((service, i) => {
  services[`:services${i}`] = service;
});

// These hold FilterExpression attribute aliases
const zipcodex = Object.keys(zipcodes).toString();
const servicex = Object.keys(services).toString();
    const params = {
    TableName: "myTable",
    IndexName: "zipCode-packageSelected-index",
    FilterExpression: `zipCode IN (${zipcodex}) AND packageSelected IN (${servicex})`,
    ExpressionAttributeValues : {...zipcodes, ...services},
};

  try {
    const result = await dynamoDbLib.call("scan", params);
    // Return the matching list of items in response body
    return success(result.Items);
  } catch (e) {
    return failure(e.message);
  }
}

标签: arraysnode.jsaws-api-gateway

解决方案


传递一个逗号分隔的字符串并将其拆分到后端。

例子:https://example.com/apis/sample?radius=a,b,c,d&availableServices=x,y,z

并在 api defenition 中以逗号分隔字段。

const data = {
  radius: event.queryStringParameters.radius.split(','),
  availableServices: event.queryStringParameters.availableServices.split(',')
};

推荐阅读