Query DynamoDB with array of numbers that is not the pk or sk in NodeJs?

When working with API requests in NodeJs, it is important to handle the request body properly, especially when dealing with arrays of numbers. In this case, let’s consider an API request body that contains an array of user IDs like the following:

“`

{

“userIds”: [10, 11, 12, 20]

}

“`

It is important to note that the userIds in the database are of number type and they are not primary or secondary keys. So, how can we query DynamoDB to get the details of these users in NodeJs?

One approach is to use the batchGet operation in DynamoDB. However, when using batchGet, we need to pass the keys of the items we want to retrieve. In the code snippet below, we attempt to do this:

const keys: { userIds: number }[] = userIds.map(id => ({ userId: id }));
const params: BatchGetCommandInput = {
    RequestItems: {
        [this.tableName]: {
            Keys: keys,
            ProjectionExpression: projectionExpression
        }
    }
};
return ResultAsync.fromPromise(this.dynamoDocumentClient.batchGet(params));

However, it seems like the batchGet operation requires the keys to be passed in a certain format, which may not work in this case. This could be due to the fact that the keys are not primary or secondary keys in the database.

In such cases, we may need to consider alternative approaches to retrieve the user details from DynamoDB. One possible solution could be to use the query operation instead of batchGet. By using the query operation with appropriate filters, we can retrieve the details of the users based on their IDs.

Overall, when dealing with API requests and database queries in NodeJs, it is important to carefully consider the data types, keys, and operations available in the database to ensure successful retrieval of the desired information.


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *