javascript - 如何使用 DynamoDB 使用 "contains"进行搜索

标签 javascript reactjs amazon-web-services amazon-dynamodb serverless-framework

我正在尝试在我的 React 应用程序中添加搜索功能。

我有这个 DynamoDB 表:

---------------------
movie_id | movie_name
---------------------
1        | name a
---------------------
2        | name b
---------------------

我想创建一个搜索功能来在 React 应用程序的搜索输入中搜索“b”,并从数据库中获取“name b”作为结果。

我尝试使用 CONTAINS查询,但没有成功,而且这似乎不是一种正确的方法。

const SEARCH_KEYWORD = "b";

let params = {
   TableName : 'TABLE_NAME',
   KeyConditionExpression: "contains(#movie_name, :movie_name)",
   ExpressionAttributeNames:{
     "#movie_name": 'movie_name'
   },
   ExpressionAttributeValues:{
       ":movie_name": SEARCH_KEYWORD
   }
};
documentClient.query(params, function(err, data) {
  console.log(data);
});

使用 DynamoDB 在我的 React 应用程序上创建搜索功能的最佳方法是什么?

通过搜索关键字运行查询以检查数据是否包含关键字值是否有意义?

最佳答案

CONTAINS 运算符在 query API 中不可用。您需要为此使用 scan API ( see this link )。

尝试以下操作:

const AWS = require('aws-sdk');
const documentClient = new AWS.DynamoDB.DocumentClient();
const SEARCH_KEYWORD = "b";

let params = {
    TableName : 'TABLE_NAME',
    FilterExpression: "contains(#movie_name, :movie_name)",
    ExpressionAttributeNames: {
        "#movie_name": "movie_name",
    },
    ExpressionAttributeValues: {
        ":movie_name": SEARCH_KEYWORD,
    }       
};

documentClient.scan(params, function(err, data) {
    console.log(data);
});

结果:

{ 
    Items: [ 
        { 
            movie_id: 2,
            movie_name: 'name b' 
        } 
    ], 
    Count: 1, 
    ScannedCount: 2 
}

关于javascript - 如何使用 DynamoDB 使用 "contains"进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43793888/

相关文章:

php - 将我的 LAMP 移至亚马逊

amazon-web-services - lambda + efs - 安装与接入点

javascript - 带点符号的多重导出

javascript - Bootstrap 导航栏固定顶部和 body 填充顶部

javascript - jQuery .remove() 上的 IE7/IE8 Javascript 错误

php - 自动提交 HTML 表单到自己的 PHP

javascript - 在 create-react-app 创建的环境中获取本地 JSON 文件时出现 JSON 解析错误

javascript - React - 数组拼接问题

android - 在 react-native 中打开 webview 时出现 ClassNotFoundException

amazon-web-services - AWS IAM Lambda "is not authorized to perform: lambda:GetFunction"