Javascript 如何使用“搜索”;包括「;带发电机

Javascript 如何使用“搜索”;包括「;带发电机,javascript,reactjs,amazon-web-services,amazon-dynamodb,serverless-framework,Javascript,Reactjs,Amazon Web Services,Amazon Dynamodb,Serverless Framework,我正在尝试在我的React应用程序上实现搜索功能 我有一张DynamoDB表: --------------------- movie_id | movie_name --------------------- 1 | name a --------------------- 2 | name b --------------------- 我想做一个搜索功能,在React应用程序的搜索输入上搜索“b”,并从数据库中获取“名称b”作为结果 我试着用包含来查询,但是没

我正在尝试在我的React应用程序上实现搜索功能

我有一张DynamoDB表:

---------------------
movie_id | movie_name
---------------------
1        | name a
---------------------
2        | name b
---------------------
我想做一个搜索功能,在React应用程序的搜索输入上搜索“b”,并从数据库中获取“名称b”作为结果

我试着用
包含
查询
,但是没有用,而且似乎不是一种正确的方法

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应用程序上创建搜索功能的最佳方法是什么


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

查询
API中没有
包含
运算符。您需要为此()使用
scan
API

请尝试以下操作:

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 
}

非常感谢你!它起作用了!还有一个问题,这是构建搜索功能的理想方法吗?或者有更好的方法可以做到这一点?@Ohsik,使用“包含”搜索永远不会是最优的,因为它总是需要对表进行完整扫描。如果您有大量数据,这可能会带来性能问题。但是,检查名称“开头”是否可以与
query
API一起使用,并受益于索引,这将极大地提高性能。但是很明显,“开始于”不同于“包含”。@Ohsik,如果您需要对数百万行使用“包含”,我建议您注意与DynamoDB的集成。我认为现在您可以将其用作筛选器表达式