2017-04-25 32 views
0

在我dynamoDB表中的每個對象看起來像DynamoDB更新的NodeJS:語法錯誤令牌: 「_」,近 「_geoloc」

{ 
    _geoloc: {lat: 123, lng: 456}, 
    name: 'abc', 
    city: 'belarus', 
    id: 'unique1' 
} 

我有以下更新表達式:

const params = { 
    TableName: CONFIG.dynamoDB.tableName, 
    Key:{ 
     "id": location.id.toString() 
    }, 
    UpdateExpression: "set city=:c, _geoloc=:g", 
    ExpressionAttributeValues:{ 
     ":c": location.address.city, 
     ":g": geoCodes 
    }, 
    ReturnValues:"UPDATED_NEW" 
    }; 

DynamoDB引發以下錯誤:

ValidationException: Invalid UpdateExpression: Syntax error; token: "_", near: ", _geoloc" 
    at Request.extractError (/Users/mv/pcode/meeting-finder-kinesis-consumer/node_modules/aws-sdk/lib/protocol/json.js:48:27) 

據我知道.. _是一個有效的字符有一個名稱

任何建議如何解決這個問題?

回答

1

同意,屬性名稱可以包含下劃線。但是,在這種情況下,您需要在update表達式中爲屬性名稱定義一個佔位符,並使用Expression Attribute Name來爲佔位符定義實際屬性名稱(因爲它包含特殊字符)。

"ExpressionAttributeNames" : "#geoloc = _geoloc" 

另外,只需使用#geoloc替換更新表達式上的_geoloc即可。

這應該可以解決問題。

相關問題