我正在尝试在我的 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/