2017-07-07 11 views
1

私は、一時列と最低限の一時列を持っています。 tempカラムは連続して書かれていますが、tempがminTempより小さい場合、minTempは新しいlowを反映するように更新されます。私は はので、私の列がDynamoDBの条件付き更新の大/小に関する適切な形式

id and date <- these are my keys 
temp <- this is the current temperature 
minTemp <- this is the lowest temperature for the day 

されており、ここでは非稼働コードで、以下のコードが間違っている知っているが、ありませんなぜ私は

var tparams = { 
    Key: { id: id, date: dayofyear(date)}, 
    TableName: "myTable", 
    UpdateExpression: "Set minTemp = temp", 
    ConditionExpression: "temp < minTemp", 

    ExpressionAttributeValues:{ 
    'temp' : 'minTemp 
     } 
    ReturnValues: "UPDATED_NEW" 
    }; 
console.log(tparams); 

を行うにしようとしています何のアイデアを得るためにそれはちょうどawsドキュメントは非常に少しのヘルプのようですか?

+0

表現属性の値はコロンで始まる必要があります。 http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ExpressionAttributeValues.htmlを参照してください。 – jarmod

+0

はい、私は実際に私がこれを投稿した後に働いています – Messak

+0

聞いてよかったですが、回答を書いて、選択された回答としてマークすることで、これに時間を費やすのを避けるために他の人を助けてください。 – jarmod

答えて

0

私のために働いた解決策はここにあります。

attrNamesMinT["#minTemp"] = "minTemp"; 
attValuesMinT[":mint"] = temperature; 

var mintparams = { 
    TableName: "myTable", 
    Key: { id: id, date: dayofyear(date)}, 
    UpdateExpression: "Set #minTemp = :mint", 
    ConditionExpression: ":mint < #minTemp or attribute_not_exists(#minTemp)", 
    ExpressionAttributeNames: attrNamesMinT, 
    ExpressionAttributeValues: attValuesMinT, 
    ReturnValues: "UPDATED_NEW" 
}; 


console.log(mintparams); 
dynamo.updateItem(mintparams, function(err,res){ 
    console.log(err); 
}); 
関連する問題