我在dynamo中有一个键,该键具有两个具有不同范围键的全局二级索引。像这样:
const productSchema = new Schema(
{
productCategory: {
type: String,
index: [{
global: true,
rangeKey: 'serialNumberEnd',
name: 'productCategory',
throughput: { read: 1, write: 1 },
project: ['quantity'],
},
{
global: true,
rangeKey: 'orderType',
name: 'openOrders',
throughput: { read: 1, write: 1 },
project: true,
}],
},
{
throughput: { read: 1, write: 1 },
useNativeBooleans: true,
saveUnknown: true,
},
);`
尝试使用“名称”似乎不是答案。
Resource.query('openOrder').eq(id)
构造查询时,如何区分资源中同一键上的两个GSI?
编辑-向架构添加了其他上下文,将答案移至答案部分
答案 0 :(得分:0)
在这种情况下,您不想使用索引的name
属性。您想使用实际属性来执行此操作。
例如:
Resource.query('openOrder').eq(id)
.where('serialNumberEnd').lt(5)
我不知道您的整个架构,因此与您要执行的操作不完全匹配。但是类似的事情应该起作用。
您还可以查看this test in the source code的示例,该示例在一个属性上使用多个索引并进行查询。
答案 1 :(得分:0)
if(result.products.length > 0)
我在使用这种语法时有点慢。希望这对其他人有帮助。
编辑:语法更简洁/架构有更多上下文
const result = await Product.query(
{
hash: { productCategory: { eq: 'tags' } },
range: { orderType: { eq: 'sale' } },
},
{ indexName: 'openOrders' },).exec();
我不希望Dynamoose根据'where'语句中的Range来识别正确的索引。 {{indexName:'value'}是必需的。