如何使用 "contains" 和 DynamoDB 进行搜索
How to make search using "contains" with DynamoDB
我正在尝试在我的 React 应用程序中添加搜索功能。
我有这个 DynamoDB table:
---------------------
movie_id | movie_name
---------------------
1 | name a
---------------------
2 | name b
---------------------
我想创建一个搜索功能来在 React 应用程序的搜索输入中搜索 "b",并从数据库中获取 "name b" 作为结果。
我尝试 query
和 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
}
我正在尝试在我的 React 应用程序中添加搜索功能。
我有这个 DynamoDB table:
---------------------
movie_id | movie_name
---------------------
1 | name a
---------------------
2 | name b
---------------------
我想创建一个搜索功能来在 React 应用程序的搜索输入中搜索 "b",并从数据库中获取 "name b" 作为结果。
我尝试 query
和 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
}