更新单行数据

更新时间:
复制为 MD 格式

本文介绍如何通过 Node.js SDK 更新表格存储数据表中的单行数据,您可以更新属性列的值、添加属性列、删除属性列的某个版本或整个属性列。

前提条件

初始化Tablestore Client

方法说明

updateRow: function updateRow(params, callback)

params参数说明

名称

类型

说明

tableName(必选)

string

数据表名称。

primaryKey(必选)

Array

主键信息,包括主键列名称和主键值。

  • 主键列数据类型包括 STRING、INTEGER 和 BINARY。

  • 主键个数和类型必须与数据表的主键保持一致。

updateOfAttributeColumns(必选)

Array

更新的属性列信息和操作类型。

condition(必选)

TableStore.Condition

更新条件,详情请参见条件更新

returnContent(可选)

object

返回的数据内容。

  • returnType(可选)number:返回类型。

    • TableStore.ReturnType.NONE:默认值,不返回数据。

    • TableStore.ReturnType.Primarykey:返回主键列。

    • TableStore.ReturnType.AfterModify:返回更改后的列值,用于原子计数器

transactionId(可选)

string

局部事务ID,用于唯一标识局部事务,详情请参见局部事务

示例代码

以下示例代码用于修改 test_table 表中主键值为 row1 的行数据,将属性列 col1 的值修改为 changed_val1。

var params = {
    tableName: 'test_table',
    primaryKey: [{ 'id': 'row1' }],
    // 更新行数据时必须指定更新条件 (TableStore.RowExistenceExpectation.IGNORE,表示不做行存在性判断)
    condition: new TableStore.Condition(TableStore.RowExistenceExpectation.IGNORE, null)
};
params.updateOfAttributeColumns = [
    { 'PUT': [{ 'col1': 'changed_val1' }] }
]

client.updateRow(params, function (err, data) {
    if (err) {
        console.log('Update row failed with error:', err);
        return;
    }
    console.log('RequestId: ', data.RequestId);
    console.log('Read CU Cost: ', data.consumed.capacityUnit.read);
    console.log('Write CU Cost: ', data.consumed.capacityUnit.write);
});

您也可以参照示例代码进行以下行数据操作。

  • 添加一个属性列。

    params.updateOfAttributeColumns = [
        { 'PUT': [{ 'col2': 'val2' }] }
    ]
  • 设置属性列数据版本号。

    params.updateOfAttributeColumns = [
        { 'PUT': [{ 'col2': 'val2', 'timestamp': Date.now() }] }
    ]
  • 删除属性列指定版本的数据。

    params.updateOfAttributeColumns = [
        { 'DELETE': [{ 'col2': TableStore.Long.fromNumber(1496826473186) }] },
    ]
  • 删除整个属性列数据。

    params.updateOfAttributeColumns = [
        { 'DELETE_ALL': ['col2'] }
    ]

相关文档

批量更新数据