From 36dcea7be3302c200bde4554f93c47a8442c6698 Mon Sep 17 00:00:00 2001 From: zengyawen Date: Sat, 26 Mar 2022 20:29:09 +0800 Subject: [PATCH] update docs Signed-off-by: zengyawen --- .../database/database-preference-overview.md | 4 ++-- .../database-relational-guidelines.md | 16 +++------------- .../figures/how-distributedobject-works.png | Bin 14443 -> 12271 bytes 3 files changed, 5 insertions(+), 15 deletions(-) diff --git a/zh-cn/application-dev/database/database-preference-overview.md b/zh-cn/application-dev/database/database-preference-overview.md index f8990ad133..78a87adb1a 100644 --- a/zh-cn/application-dev/database/database-preference-overview.md +++ b/zh-cn/application-dev/database/database-preference-overview.md @@ -24,5 +24,5 @@ ## 约束与限制 - 因Storage实例会加载到内存中,建议存储的数据不超过一万条,并及时清理不再使用的实例,以便减少非内存开销。 -- 数据中的key为string类型,要求非空且字符长度不超过80个。 -- 当数据中的value为string类型时,允许为空,字符长度不超过8192个。 \ No newline at end of file +- 数据中的key为string类型,要求非空且字符长度不超过80。 +- 当数据中的value为string类型时,允许为空,字符长度不超过8192。 \ No newline at end of file diff --git a/zh-cn/application-dev/database/database-relational-guidelines.md b/zh-cn/application-dev/database/database-relational-guidelines.md index b22dab6fda..d45b506740 100644 --- a/zh-cn/application-dev/database/database-relational-guidelines.md +++ b/zh-cn/application-dev/database/database-relational-guidelines.md @@ -26,47 +26,37 @@ - **新增** - - 关系型数据库提供了插入数据的接口,通过ValuesBucket输入要存储的数据,通过返回值判断是否插入成功,插入成功时返回最新插入数据所在的行号,失败时则返回-1。 **表2** 数据库插入API | 类名 | 接口名 | 描述 | -| -------- | -------- | -------- | + | -------- | -------- | -------- | | RdbStore | insert(name: string, values: ValuesBucket, callback: AsyncCallback<number>):void | 向目标表中插入一行数据,结果以callback形式返回。
- name:指定的目标表名。
- values:表示要插入到表中的数据行。
- callback:指定callback回调函数。如果操作成功,返回行ID;否则返回-1。 | | RdbStore | insert(name: string, values: ValuesBucket): Promise<number> | 向目标表中插入一行数据,结果以Promise形式返回。
- name:指定的目标表名。
- values:表示要插入到表中的数据行。 | - **更新** - - 调用更新接口,传入要更新的数据,并通过RdbPredicates指定更新条件。该接口的返回值表示更新操作影响的行数。如果更新失败,则返回0。 **表3** 数据库更新API | 类名 | 接口名 | 描述 | -| -------- | -------- | -------- | + | -------- | -------- | -------- | | RdbStore | update(values: ValuesBucket, rdbPredicates: RdbPredicates, callback: AsyncCallback<number>):void | 根据RdbPredicates的指定实例对象更新数据库中的数据,结果以callback形式返回。
- values:以ValuesBucket存储的要更新的数据。
- rdbPredicates:表示RdbPredicates的实例对象指定的更新条件。
- callback:指定的callback回调方法。返回受影响的行数。 | | RdbStore | update(values: ValuesBucket, rdbPredicates: RdbPredicates): Promise | 根据RdbPredicates的指定实例对象更新数据库中的数据,结果以Promise形式返回。
- values:以ValuesBucket存储的要更新的数据。
- rdbPredicates:表示RdbPredicates的实例对象指定的更新条件。 | - **删除** - - - 调用删除接口,通过RdbPredicates指定删除条件。该接口的返回值表示删除的数据行数,可根据此值判断是否删除成功。如果删除失败,则返回0。 **表4** 数据库删除API | 类名 | 接口名 | 描述 | -| -------- | -------- | -------- | + | -------- | -------- | -------- | | RdbStore | delete(rdbPredicates: RdbPredicates, callback: AsyncCallback<number>):void | 根据rdbPredicates的指定实例对象从数据库中删除数据,结果以callback形式返回。
- rdbPredicates:RdbPredicates的实例对象指定的删除条件。
- callback:指定callback回调函数。返回受影响的行数。 | | RdbStore | delete(rdbPredicates: RdbPredicates): Promise | 根据rdbPredicates的指定实例对象从数据库中删除数据,结果以Promise形式返回。
- rdbPredicates:RdbPredicates的实例对象指定的删除条件。 | - **查询** - - - 关系型数据库提供了两种查询数据的方式: - 直接调用查询接口。使用该接口,会将包含查询条件的谓词自动拼接成完整的SQL语句进行查询操作,无需用户传入原生的SQL语句。 diff --git a/zh-cn/application-dev/database/figures/how-distributedobject-works.png b/zh-cn/application-dev/database/figures/how-distributedobject-works.png index 40705f8ef4077004494f3bea3ca279b5fb4b25c3..9af60f511701f7ef7e8424492d42f247c6088b28 100644 GIT binary patch literal 12271 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 b>6JZ-VR)Gm-LcjE0g&DmBkdxsTMzyVh0W{D literal 14443 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 -- GitLab