【问题标题】:Secondary Index - ValidationException: The provided starting key is invalid二级索引 - ValidationException:提供的起始键无效
【发布时间】:2017-04-22 23:45:25
【问题描述】:

我使用 vogels 作为我的 DynamoDB 的对象映射器, 我有一个具有以下架构的 vogels 模型:

Stock: {
   ID: String, (Hash)
   DateUTC: String (Secondary Index) 
 }

如果我尝试这样做:

const query = Stock.query('VOD.XLON');

并加载所有项目,因为我有大约 5000 个:

query.loadAll();
query.exec((err, result) => {});

我得到错误:

ValidationException: 提供的起始密钥无效。

我做错了什么,或者 vogels 不能很好地加载所有具有二级索引的项目?

【问题讨论】:

    标签: node.js amazon-dynamodb vogels


    【解决方案1】:

    我无法复制该问题。但是,以下代码适用于上述模型。

    var Joi = require('joi');
    var vogels = require('vogels');
    
    var AWS = require("aws-sdk");
    var creds = new AWS.Credentials('userid', 'password', 'session');
    
    vogels.AWS.config.update({
        region: "us-west-2",
        endpoint: "http://localhost:8000",
        credentials: creds
    });
    
    var Stock = vogels.define('Stock', {
        hashKey: 'ID',
    
        schema: {
            ID: Joi.string(),
            DateUTC: Joi.string()
        },
        indexes: [{
            hashKey: 'DateUTC', name: 'stock_index', type: 'global'
        }],
        tableName: 'stock'
    });
    
    const query = Stock.query('1');
    query.loadAll();
    query.exec((err, result) => {if(!err) {console.log(JSON.stringify(result,undefined, 2))}});
    

    【讨论】:

    • 太棒了!我添加了索引: [{ hashKey: 'DateUTC', name: 'stock_index', type: 'global' }] 现在它可以工作了!
    • 为什么需要添加它?
    • 不添加 vogels 不知道 gsi 可用于该架构。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-31
    • 1970-01-01
    • 1970-01-01
    • 2015-08-30
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    相关资源
    最近更新 更多