@cloudbase/node-sdk
Advanced tools
Comparing version 2.0.0 to 2.0.1
@@ -0,17 +1,21 @@ | ||
# v2.0.1 | ||
- [fix] 修复 db transaction add 接口未携带事务 ID 导致异常问题 | ||
# v2.0.0 | ||
- [add] 支持db新特性&灰度兼容 | ||
- [add] 支持 db 新特性&灰度兼容 | ||
# v1.1.1 | ||
- [fix] 修复函数调函数时请求签名问题 | ||
- [fix] 修复函数调函数时请求签名问题 | ||
# v1.1.0 | ||
- [add] 支持函数灰度发布 | ||
- [fix] 修复elemMatch中使用neq无效bug | ||
- [add] 支持函数灰度发布 | ||
- [fix] 修复 elemMatch 中使用 neq 无效 bug | ||
# v1.0.2 | ||
- [fix] 本地调试逻辑优化 | ||
- [fix] 本地调试逻辑优化 | ||
@@ -18,0 +22,0 @@ # v1.0.0 |
117
docs/auth.md
@@ -1,33 +0,116 @@ | ||
### 获取auth的引用 | ||
# 登录鉴权 | ||
## getUserInfo | ||
#### 1. 接口描述 | ||
接口功能:获取用户信息 | ||
接口声明:`getUserInfo(): Object` | ||
#### 2. 输入参数 | ||
无 | ||
#### 3. 返回结果 | ||
| 字段 | 类型 | 必填 | 说明 | | ||
| ------------ | ------ | ---- | ------------------------------------------- | | ||
| openId | string | 是 | 微信 openId,非微信授权登录则空 | | ||
| appId | string | 是 | 微信 appId,非微信授权登录则空 | | ||
| uid | string | 是 | 用户唯一 ID | | ||
| customUserId | string | 是 | 开发者自定义的用户唯一 id,非自定义登录则空 | | ||
#### 4. 示例代码 | ||
```js | ||
const tcb = require('@cloudbase/node-sdk'); | ||
const app = tcb.init({env:'xxx', credentials:'xxx'}) | ||
const auth = app.auth(); | ||
const tcb = require('@cloudbase/node-sdk') | ||
const app = tcb.init({ env: 'xxx' }) | ||
const auth = app.auth() | ||
exports.main = async (event, context) => { | ||
const { | ||
openId, //微信openId,非微信授权登录则空 | ||
appId, //微信appId,非微信授权登录则空 | ||
uid, //用户唯一ID | ||
customUserId //开发者自定义的用户唯一id,非自定义登录则空 | ||
} = auth.getUserInfo() | ||
console.log(openId, appId, uid, customUserId) | ||
} | ||
``` | ||
#### 获取用户信息 | ||
## getClientIP | ||
#### 1. 接口描述 | ||
接口功能:获取客户端 IP | ||
接口声明:`getClientIP(): string` | ||
#### 2. 输入参数 | ||
无 | ||
#### 3. 返回结果 | ||
| 字段 | 类型 | 必填 | 说明 | | ||
| ---- | ------ | ---- | --------- | | ||
| - | string | 是 | 客户端 IP | | ||
#### 4. 示例代码 | ||
```js | ||
const { | ||
openId, //微信openId,非微信授权登录则空 | ||
appId, //微信appId,非微信授权登录则空 | ||
uid, //用户唯一ID | ||
customUserId //开发者自定义的用户唯一id,非自定义登录则空 | ||
} = auth.getUserInfo() | ||
const tcb = require('@cloudbase/node-sdk') | ||
const app = tcb.init({ env: 'xxx' }) | ||
const auth = app.auth() | ||
exports.main = async (event, context) => { | ||
const ip = auth.getClientIP() // string | ||
console.log(ip) | ||
} | ||
``` | ||
#### 获取客户端IP | ||
## createTicket | ||
#### 1. 接口描述 | ||
接口功能:获取自定义登录的登录凭据 ticket | ||
接口声明:`createTicket(): string` | ||
#### 2. 输入参数 | ||
| 字段 | 类型 | 必填 | 说明 | | ||
| ------------ | ------ | ---- | ------------------------------ | | ||
| customUserId | string | 是 | 开发者自定义的用户唯一 id | | ||
| option | string | 是 | 微信 appId,非微信授权登录则空 | | ||
#### option | ||
| 字段 | 类型 | 必填 | 说明 | | ||
| ------- | ------ | ---- | ----------------------- | | ||
| refresh | number | 否 | access_token 的刷新时间 | | ||
| expire | number | 否 | access_token 的过期时间 | | ||
#### 3. 返回结果 | ||
| 字段 | 类型 | 必填 | 说明 | | ||
| ---- | ------ | ---- | --------------------- | | ||
| - | string | 是 | 自定义登录凭据 ticket | | ||
#### 4. 示例代码 | ||
```js | ||
const ip = auth.getClientIP() | ||
``` | ||
const tcb = require('@cloudbase/node-sdk') | ||
const app = tcb.init({ env: 'xxx' }) | ||
#### 获取自定义登录的登录凭据ticket | ||
const auth = app.auth() | ||
```js | ||
const customUserId = '123456' // 开发者自定义的用户唯一id | ||
const ticket = auth.createTicket(customUserId, { | ||
refresh: 3600 * 1000, // access_token的刷新时间 | ||
refresh: 3600 * 1000 // access_token的刷新时间 | ||
}) | ||
console.log(ticket) | ||
``` |
@@ -1,18 +0,64 @@ | ||
#### 获取云函数执行的 env | ||
# 环境 | ||
## SYMBOL_CURRENT_ENV | ||
字段说明: 初始化时使用该字段,可指定请求当前云函数的环境 | ||
#### 示例代码 | ||
```js | ||
// 云函数环境下示例代码 | ||
const tcb = require('@cloudbase/node-sdk') | ||
// 取当前云函数的环境初始化 | ||
const app = tcb.init({ env: tcb.SYMBOL_CURRENT_ENV }) | ||
/** | ||
* @returns string | ||
*/ | ||
const env = tcb.SYMBOL_CURRENT_ENV | ||
exports.main = async (event, context) => { | ||
/** | ||
* @returns string | ||
*/ | ||
// todo | ||
} | ||
``` | ||
#### 解析云函数环境下的环境变量 | ||
## parseContext | ||
#### 1. 接口描述 | ||
接口功能:解析云函数环境下的环境变量(参数取用 云函数入口参数 context 即可) | ||
接口声明:`parseContext(context): Object` | ||
#### 2. 输入参数 | ||
| 字段 | 类型 | 必填 | 说明 | | ||
| ------------------ | ------ | ---- | -------------- | | ||
| memory_limit_in_mb | Number | 是 | 云函数内存限制 | | ||
| time_limit_in_ms | Number | 是 | 运行时间限制 | | ||
| request_id | String | 是 | 请求 ID | | ||
| environ | String | 是 | 环境变量字符串 | | ||
| function_version | String | 是 | 云函数版本 | | ||
| function_name | String | 是 | 云函数名 | | ||
| namespace | String | 是 | 命名空间 | | ||
#### 3. 返回结果 | ||
| 字段 | 类型 | 必填 | 说明 | | ||
| ------------------ | ------ | ---- | ------------------------------------------ | | ||
| memory_limit_in_mb | Number | 是 | 云函数内存限制 | | ||
| time_limit_in_ms | Number | 是 | 运行时间限制 | | ||
| request_id | String | 是 | 请求 ID | | ||
| environ | Object | 是 | 环境变量对象(含用户设置的自定义环境变量值) | | ||
| function_version | String | 是 | 云函数版本 | | ||
| function_name | String | 是 | 云函数名 | | ||
| namespace | String | 是 | 命名空间 | | ||
#### 4. 示例代码 | ||
```javascript | ||
const tcb = require('@cloudbase/node-sdk') | ||
const envObj = tcb.parseContext(context) // context 参数 取自云函数入口函数handler的context对象 | ||
exports.main = async (event, context) => { | ||
const envObj = tcb.parseContext(context) // context 参数 取自云函数入口函数handler的context对象 | ||
console.log(envObj) // 打印云函数环境变量 | ||
} | ||
``` |
@@ -1,50 +0,63 @@ | ||
## 云函数 | ||
# 云函数 | ||
### 执行函数 | ||
callFunction(object) | ||
## callFunction | ||
| 字段 | 类型 | 必填 | 说明 | ||
| --- | --- | --- | --- | ||
| object | Object | 是 | 云函数请求对象 | ||
| opts | Object | 否 | 自定义配置,目前只支持超时时间设置,{timeout: number} | ||
#### 1. 接口描述 | ||
请求参数 object | ||
接口功能:执行云函数 | ||
| 字段 | 类型 | 必填 | 说明 | ||
| --- | --- | --- | --- | ||
| name | string | 是 | 云函数名称 | ||
| data | object | 否 | 云函数参数 | ||
接口声明:`callFunction(object: IFunctionParams, opts: Object): Promise<Object>` | ||
响应参数 | ||
#### 2. 输入参数 | ||
| 字段 | 类型 | 必填 | 说明 | ||
| --- | --- | --- | --- | ||
| code | string | 否 | 状态码,操作成功则不返回 | ||
| message | string | 否 | 错误描述 | ||
| result | object | 否 | 云函数执行结果 | ||
| requestId | string | 否 | 请求序列号,用于错误排查 | ||
| 字段 | 类型 | 必填 | 说明 | | ||
| ------ | --------------- | ---- | ------------------------------------------------------------ | | ||
| object | IFunctionParams | 是 | 云函数调用请求参数 | | ||
| opts | Object | 否 | 自定义配置,目前支持 SDK 请求超时时间设置,{timeout: number} | | ||
示例代码 | ||
##### IFunctionParams | ||
| 字段 | 类型 | 必填 | 说明 | | ||
| ---- | ------ | ---- | ---------- | | ||
| name | string | 是 | 云函数名称 | | ||
| data | object | 否 | 云函数参数 | | ||
#### 3. 返回结果 | ||
| 字段 | 类型 | 必填 | 说明 | | ||
| --------- | ------ | ---- | ------------------------ | | ||
| code | string | 否 | 状态码,操作成功则不返回 | | ||
| message | string | 否 | 错误描述 | | ||
| result | object | 否 | 云函数执行结果 | | ||
| requestId | string | 否 | 请求序列号,用于错误排查 | | ||
#### 4. 示例代码 | ||
```javascript | ||
const tcb = require("@cloudbase/node-sdk"); | ||
const app = tcb.init() | ||
let result = await app.callFunction({ | ||
name: "test", | ||
// 云函数环境下示例代码 | ||
// 初始化 | ||
const tcb = require('@cloudbase/node-sdk') | ||
const app = tcb.init({ | ||
env: 'xxx' | ||
}) | ||
exports.main = async (event, context) => { | ||
const res = await app.callFunction({ | ||
name: 'test', | ||
data: { a: 1 } | ||
}); | ||
``` | ||
}) | ||
console.log(res) // 打印函数调用结果 | ||
调用云函数设置自定义超时 | ||
```javascript | ||
const tcb = require("@cloudbase/node-sdk"); | ||
const app = tcb.init() | ||
let result = await app.callFunction({ | ||
name: "test", | ||
data: { a: 1 } | ||
}, { | ||
timeout: 5000 | ||
}); | ||
const res1 = await app.callFunction( | ||
{ | ||
name: 'test', | ||
data: { a: 1 } | ||
}, | ||
{ | ||
timeout: 5000 | ||
} | ||
) | ||
console.log(res1) | ||
} | ||
``` | ||
@@ -1,5 +0,13 @@ | ||
## 应用初始化 | ||
# 初始化 | ||
参数 | ||
## init | ||
#### 1. 接口描述 | ||
接口功能:SDK 实例初始化 | ||
接口声明:`init(object: Object): Promise<Object>` | ||
#### 2. 输入参数 | ||
| 字段 | 类型 | 必填 | 说明 | | ||
@@ -15,2 +23,10 @@ | ----------- | ------ | ---- | ------------------------------------------------------------------------------------------------------------------------------------ | | ||
#### 3. 返回结果 | ||
| 字段 | 类型 | 必填 | 说明 | | ||
| ---- | ------ | ---- | ------------ | | ||
| - | Object | 是 | tcb 实例对象 | | ||
#### 4. 示例代码 | ||
```javascript | ||
@@ -20,2 +36,3 @@ // 初始化示例 | ||
// 初始化资源 | ||
// 云函数下不需要secretId和secretKey。 | ||
@@ -38,7 +55,7 @@ // env如果不指定将使用默认环境 | ||
//获取执行当前云函数的环境 | ||
tcb.SYMBOL_CURRENT_ENV | ||
const currentEnv = tcb.SYMBOL_CURRENT_ENV | ||
//云函数下指定环境为当前的执行环境 | ||
const app = tcb.init({ | ||
env: tcb.SYMBOL_CURRENT_ENV | ||
env: currentEnv | ||
}) | ||
@@ -53,3 +70,3 @@ | ||
//初始化环境'xx'和'zz' | ||
const app = tcb.init({ | ||
const app1 = tcb.init({ | ||
env: 'xx' | ||
@@ -56,0 +73,0 @@ }) |
@@ -1,10 +0,12 @@ | ||
## 介绍 | ||
# 介绍 | ||
TCB 提供开发应用所需服务和基础设施。CloudBase Server Node.js SDK 让你可以在服务端(如腾讯云云函数或 云主机)使用 Node.js 服务访问 TCB 的的服务。 | ||
Cloudbase Server Node.js SDK 让你可以在服务端(如腾讯云云函数或 云主机 等)使用 Node.js 服务访问 TCB 的的服务,如云函数调用,文件上传下载,数据库集合文档操作等,方便快速搭建应用。 | ||
需要 Node.js v8.9 及以上版本。 | ||
> ⚠️ 当你计划在项目中使用 @cloudbase/node-sdk 替代 tcb-admin-node 时,请务必阅读[迁移文档](./packageUpgrade.md) | ||
## 安装 | ||
CloudBase Server Node.js SDK 可以通过 npm 安装: | ||
Cloudbase Server Node.js SDK 可以通过 npm 安装: | ||
@@ -15,2 +17,4 @@ ```bash | ||
## 使用示例 | ||
要在你的代码内使用该模块: | ||
@@ -17,0 +21,0 @@ |
126
docs/log.md
@@ -1,19 +0,125 @@ | ||
## 打印日志 | ||
# 打印日志 | ||
## log | ||
#### 1. 接口描述 | ||
接口功能:按 log 级别上报日志 | ||
接口声明:`log(data: Object): void` | ||
#### 2. 输入参数 | ||
| 字段 | 类型 | 必填 | 说明 | | ||
| ---- | ------ | ---- | -------------- | | ||
| - | Object | 是 | 打印的日志对象 | | ||
#### 3. 返回结果 | ||
无 | ||
#### 4. 示例代码 | ||
```javascript | ||
const tcb = require('@cloudbase/node-sdk') | ||
const app = tcb.init() | ||
let logMsg = {name: 'luke', age: '25'} // msg必须为对象 | ||
let logMsg = { name: 'luke', age: '25' } // msg必须为对象 | ||
// 输出log级别 | ||
app.logger().log(logMsg) | ||
exports.main = async (event, context) => { | ||
// 输出log级别 | ||
app.logger().log(logMsg) | ||
} | ||
``` | ||
// 输出warn级别 | ||
app.logger().warn(logMsg) | ||
## warn | ||
// 输出error级别 | ||
app.logger().error(logMsg) | ||
#### 1. 接口描述 | ||
// 输出info级别 | ||
app.logger().info(logMsg) | ||
接口功能:按 warn 级别上报日志 | ||
接口声明:`warn(data: Object): void` | ||
#### 2. 输入参数 | ||
| 字段 | 类型 | 必填 | 说明 | | ||
| ---- | ------ | ---- | -------------- | | ||
| - | Object | 是 | 打印的日志对象 | | ||
#### 3. 返回结果 | ||
无 | ||
#### 4. 示例代码 | ||
```javascript | ||
const tcb = require('@cloudbase/node-sdk') | ||
const app = tcb.init() | ||
let logMsg = { name: 'luke', age: '25' } // msg必须为对象 | ||
exports.main = async (event, context) => { | ||
// 输出warn级别 | ||
app.logger().warn(logMsg) | ||
} | ||
``` | ||
## error | ||
#### 1. 接口描述 | ||
接口功能:按 error 级别上报日志 | ||
接口声明:`error(data: Object): void` | ||
#### 2. 输入参数 | ||
| 字段 | 类型 | 必填 | 说明 | | ||
| ---- | ------ | ---- | -------------- | | ||
| - | Object | 是 | 打印的日志对象 | | ||
#### 3. 返回结果 | ||
无 | ||
#### 4. 示例代码 | ||
```javascript | ||
const tcb = require('@cloudbase/node-sdk') | ||
const app = tcb.init() | ||
let logMsg = { name: 'luke', age: '25' } // msg必须为对象 | ||
exports.main = async (event, context) => { | ||
// 输出error级别 | ||
app.logger().error(logMsg) | ||
} | ||
``` | ||
## info | ||
#### 1. 接口描述 | ||
接口功能:按 info 级别上报日志 | ||
接口声明:`info(data: Object): void` | ||
#### 2. 输入参数 | ||
| 字段 | 类型 | 必填 | 说明 | | ||
| ---- | ------ | ---- | -------------- | | ||
| - | Object | 是 | 打印的日志对象 | | ||
#### 3. 返回结果 | ||
无 | ||
#### 4. 示例代码 | ||
```javascript | ||
const tcb = require('@cloudbase/node-sdk') | ||
const app = tcb.init() | ||
let logMsg = { name: 'luke', age: '25' } // msg必须为对象 | ||
exports.main = async (event, context) => { | ||
// 输出info级别 | ||
app.logger().info(logMsg) | ||
} | ||
``` |
@@ -1,205 +0,222 @@ | ||
## 存储 | ||
# 存储 | ||
<!-- TOC --> | ||
## uploadFile | ||
- [上传文件](#上传文件) | ||
- [获取文件下载链接](#获取文件下载链接) | ||
- [删除文件](#删除文件) | ||
- [下载文件](#下载文件) | ||
#### 1. 接口描述 | ||
<!-- /TOC --> | ||
接口功能:上传文件到文件管理服务 | ||
### 上传文件 | ||
接口声明:`uploadFile(object: Object): Promise<Object>` | ||
uploadFile(object) | ||
#### 2. 输入参数 | ||
| 字段 | 类型 | 必填 | 说明 | ||
| --- | --- | --- | --- | ||
| object | Object | 是 | 上传文件请求参数 | ||
| opts | Object | 否 | 自定义配置,目前只支持超时时间设置,{timeout: number} | ||
| 字段 | 类型 | 必填 | 说明 | | ||
| ----------- | ------------- | ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ||
| cloudPath | String | 是 | 文件的绝对路径,包含文件名。例如 foo/bar.jpg、foo/bar/baz.jpg 等,不能包含除[0-9 , a-z , A-Z]、/、!、-、\_、.、、\*和中文以外的字符,使用 / 字符来实现类似传统文件系统的层级结构。[查看详情](https://cloud.tencent.com/document/product/436/13324) | | ||
| fileContent | fs.ReadStream | 是 | buffer 或要上传的文件[可读流](https://nodejs.org/api/stream.html#stream_class_stream_readable) | | ||
请求参数 object | ||
#### 3. 返回结果 | ||
| 字段 | 类型 | 必填 | 说明 | ||
| --- | --- | --- | --- | | ||
| cloudPath | string | 是 | 文件的绝对路径,包含文件名。例如foo/bar.jpg、foo/bar/baz.jpg等,不能包含除[0-9 , a-z , A-Z]、/、!、-、_、.、、*和中文以外的字符,使用 / 字符来实现类似传统文件系统的层级结构。[查看详情](https://cloud.tencent.com/document/product/436/13324) | ||
| fileContent | fs.ReadStream | 是 | buffer或要上传的文件[可读流](https://nodejs.org/api/stream.html#stream_class_stream_readable) | ||
| 字段 | 类型 | 必填 | 说明 | | ||
| --------- | ------ | ---- | --------------------------------------- | | ||
| fileID | string | 否 | 文件唯一 ID,用来访问文件,建议存储起来 | | ||
| requestId | string | 是 | 请求序列号,用于错误排查 | | ||
| code | string | 否 | 状态码,操作成功则不返回 | | ||
| message | string | 否 | 错误描述,操作成功则不返回 | | ||
响应参数 | ||
#### 4. 示例代码 | ||
| 字段 | 类型 | 必填 | 说明 | ||
| --- | --- | --- | --- | | ||
| code | string | 否 | 状态码,操作成功则不返回 | ||
| message | string | 否 | 错误描述 | ||
| fileID | fileID | 是 | 文件唯一ID,用来访问文件,建议存储起来 | ||
| requestId | string | 否 | 请求序列号,用于错误排查 | ||
示例代码 | ||
```javascript | ||
const tcb = require("@cloudbase/node-sdk"); | ||
const app = tcb.init() | ||
const fs = require("fs"); | ||
// 初始化 | ||
const tcb = require('@cloudbase/node-sdk') | ||
const fs = require('fs') | ||
let result = await app.uploadFile({ | ||
cloudPath: "test-admin.jpeg", | ||
fileContent: fs.createReadStream(`${__dirname}/cos.jpeg`) | ||
}); | ||
const app = tcb.init({ | ||
env: 'xxx' | ||
}) | ||
// 设置自定义超时时间 | ||
let result = await app.uploadFile({ | ||
cloudPath: "test-admin.jpeg", | ||
exports.main = async (event, context) => { | ||
const result = await app.uploadFile({ | ||
cloudPath: 'test-admin.jpeg', | ||
fileContent: fs.createReadStream(`${__dirname}/cos.jpeg`) | ||
}, { | ||
timeout: 5000 | ||
}); | ||
}) | ||
console.log(result.fileID) // 输出文件ID | ||
} | ||
``` | ||
## getTempFileURL | ||
#### 1. 接口描述 | ||
### 获取文件下载链接 | ||
接口功能:获取文件 CDN 下载链接 | ||
getTempFileURL(object) | ||
接口声明:`getTempFileURL(object: IGetTempFileURLOpts, opts: Object): Promise<Object>` | ||
| 字段 | 类型 | 必填 | 说明 | ||
| --- | --- | --- | --- | ||
| object | Object | 是 | 获取下载链接请求参数 | ||
| opts | Object | 否 | 自定义配置,目前只支持超时时间设置,{timeout: number} | ||
#### 2. 输入参数 | ||
请求参数 object | ||
| 字段 | 类型 | 必填 | 说明 | | ||
| ------ | ------------------- | ---- | ----------------------------------------------------- | | ||
| object | IGetTempFileURLOpts | 是 | 获取下载链接请求参数 | | ||
| opts | Object | 否 | 自定义配置,目前只支持超时时间设置,{timeout: number} | | ||
| 字段 | 类型 | 必填 | 说明 | ||
| --- | --- | --- | --- | | ||
| fileList | <Array>.string | 是 | 要下载的文件ID组成的数组 | ||
##### IGetTempFileURLOpts | ||
fileList | ||
| 字段 | 类型 | 必填 | 说明 | | ||
| -------- | -------------------------------- | ---- | -------------------------- | | ||
| fileList | <Array>.string Or fileItem | 是 | 要下载的文件 ID 组成的数组 | | ||
| 字段 | 类型 | 必填 | 说明 | ||
| --- | --- | --- | --- | | ||
| fileID | string | 是 | 文件ID | ||
| maxAge | Integer | 是 | 文件链接有效期 | ||
##### fileItem | ||
响应参数 | ||
| 字段 | 类型 | 必填 | 说明 | | ||
| ------ | ------ | ---- | -------------- | | ||
| fileID | string | 是 | 文件 ID | | ||
| maxAge | number | 是 | 文件链接有效期 | | ||
| 字段 | 类型 | 必填 | 说明 | ||
| --- | --- | --- | --- | | ||
| code | string | 否 | 状态码,操作成功则为SUCCESS | ||
| message | string | 否 | 错误描述 | ||
| fileList | <Array>.object | 否 | 存储下载链接的数组 | ||
| requestId | string | 否 | 请求序列号,用于错误排查 | ||
#### 3. 返回结果 | ||
fileList | ||
| 字段 | 类型 | 必填 | 说明 | | ||
| --------- | ------------------------- | ---- | ---------------------------- | | ||
| fileList | <Array>.fileUrlItem | 否 | 存储下载链接的数组 | | ||
| requestId | string | 是 | 请求序列号,用于错误排查 | | ||
| code | string | 否 | 状态码,操作成功则为 SUCCESS | | ||
| message | string | 否 | 错误描述 | | ||
| 字段 | 类型 | 必填 | 说明 | ||
| --- | --- | --- | --- | | ||
| code | string | 否 | 删除结果,成功为SUCCESS | ||
| fileID | string | 是 | 文件ID | ||
| tempFileURL | string | 是 | 文件访问链接 | ||
##### fileUrlItem | ||
示例代码 | ||
| 字段 | 类型 | 必填 | 说明 | | ||
| ----------- | ------ | ---- | ------------------------ | | ||
| code | string | 否 | 删除结果,成功为 SUCCESS | | ||
| fileID | string | 是 | 文件 ID | | ||
| tempFileURL | string | 是 | 文件访问链接 | | ||
#### 4. 示例代码 | ||
```javascript | ||
let result = await app.getTempFileURL({ | ||
// 初始化 | ||
const tcb = require('@cloudbase/node-sdk') | ||
const app = tcb.init({ | ||
env: 'xxx' | ||
}) | ||
exports.main = async (event, context) => { | ||
const result = await app.getTempFileURL({ | ||
fileList: ['cloud://test-28farb/a.png'] | ||
}); | ||
}) | ||
// 设置自定义超时时间 | ||
let result = await app.getTempFileURL({ | ||
fileList: ['cloud://test-28farb/a.png'] | ||
}, { | ||
timeout: 5000 | ||
}); | ||
result.fileList.forEach(item => { | ||
console.log(item.tempFileURL) // 打印文件访问链接 | ||
}) | ||
} | ||
``` | ||
### 删除文件 | ||
## deleteFile | ||
deletfile(object) | ||
#### 1. 接口描述 | ||
| 字段 | 类型 | 必填 | 说明 | ||
| --- | --- | --- | --- | ||
| object | Object | 是 | 删除文件请求参数 | ||
| opts | Object | 否 | 自定义配置,目前只支持超时时间设置,{timeout: number} | ||
接口功能:删除文件 | ||
请求参数 object | ||
接口声明:`deleteFile(object: IDeleteFileOpts, opts: Object): Promise<Object>` | ||
| 字段 | 类型 | 必填 | 说明 | ||
| --- | --- | --- | --- | | ||
| fileList | <Array>.string | 是 | 要删除的文件ID组成的数组 | ||
#### 2. 输入参数 | ||
响应参数 | ||
| 字段 | 类型 | 必填 | 说明 | | ||
| ------ | --------------- | ---- | ----------------------------------------------------- | | ||
| object | IDeleteFileOpts | 是 | 删除文件请求参数 | | ||
| opts | Object | 否 | 自定义配置,目前只支持超时时间设置,{timeout: number} | | ||
| 字段 | 类型 | 必填 | 说明 | ||
| --- | --- | --- | --- | | ||
| code | string | 否 | 状态码,操作成功则不返回 | ||
| message | string | 否 | 错误描述 | ||
| fileList | <Array>.object | 否 | 删除结果组成的数组 | ||
| requestId | string | 否 | 请求序列号,用于错误排查 | ||
##### IDeleteFileOpts | ||
fileList | ||
| 字段 | 类型 | 必填 | 说明 | | ||
| -------- | -------------------- | ---- | -------------------------- | | ||
| fileList | <Array>.string | 是 | 要删除的文件 ID 组成的数组 | | ||
| 字段 | 类型 | 必填 | 说明 | ||
| --- | --- | --- | --- | | ||
| code | string | 否 | 删除结果,成功为SUCCESS | ||
| fileID | string | 是 | 文件ID | ||
#### 3. 返回结果 | ||
示例代码 | ||
| 字段 | 类型 | 必填 | 说明 | | ||
| --------- | ---------------------------- | ---- | ------------------------ | | ||
| code | string | 否 | 状态码,操作成功则不返回 | | ||
| message | string | 否 | 错误描述 | | ||
| fileList | <Array>.deleteFileItem | 否 | 删除结果组成的数组 | | ||
| requestId | string | 是 | 请求序列号,用于错误排查 | | ||
##### deleteFileItem | ||
| 字段 | 类型 | 必填 | 说明 | | ||
| ------ | ------ | ---- | ------------------------ | | ||
| code | string | 否 | 删除结果,成功为 SUCCESS | | ||
| fileID | string | 是 | 文件 ID | | ||
#### 4. 示例代码 | ||
```javascript | ||
let result = await app.deleteFile({ | ||
fileList: [ | ||
"HHOeahVQ0fRTDsums4GVgMCsF6CE3wb7kmIkZbX+yilTJE4NPSQQW5EYks" | ||
] | ||
}); | ||
// 初始化 | ||
const tcb = require('@cloudbase/node-sdk') | ||
const app = tcb.init({ | ||
env: 'xxx' | ||
}) | ||
// 设置自定义超时 | ||
let result = await app.deleteFile({ | ||
fileList: [ | ||
"HHOeahVQ0fRTDsums4GVgMCsF6CE3wb7kmIkZbX+yilTJE4NPSQQW5EYks" | ||
] | ||
}, { | ||
timeout: 5000 | ||
}); | ||
exports.main = async (event, context) => { | ||
const result = await app.deleteFile({ | ||
fileList: ['HHOeahVQ0fRTDsums4GVgMCsF6CE3wb7kmIkZbX+yilTJE4NPSQQW5EYks'] | ||
}) | ||
result.fileList.forEach(item => { | ||
if (item.code === 'SUCCESS') { | ||
// 文件删除成功 | ||
} | ||
}) | ||
} | ||
``` | ||
### 下载文件 | ||
## downloadFile | ||
downloadFile(object) | ||
#### 1. 接口描述 | ||
| 字段 | 类型 | 必填 | 说明 | ||
| --- | --- | --- | --- | ||
| object | Object | 是 | 下载文件请求参数 | ||
| opts | Object | 否 | 自定义配置,目前只支持超时时间设置,{timeout: number} | ||
接口功能:下载文件到本地 | ||
请求参数 object | ||
接口声明:`downloadFile(object: IDownloadFileOpts, opts: Object): Promise<Object>` | ||
| 字段 | 类型 | 必填 | 说明 | ||
| --- | --- | --- | --- | | ||
| fileID | string | 是 | 要下载的文件的id | ||
| tempFilePath | string | 否 | 下载的文件要存储的位置 | ||
#### 2. 输入参数 | ||
响应参数 | ||
| 字段 | 类型 | 必填 | 说明 | | ||
| ------ | ----------------- | ---- | ----------------------------------------------------- | | ||
| object | IDownloadFileOpts | 是 | 下载文件请求参数 | | ||
| opts | Object | 否 | 自定义配置,目前只支持超时时间设置,{timeout: number} | | ||
| 字段 | 类型 | 必填 | 说明 | ||
| --- | --- | --- | --- | | ||
| code | string | 否 | 状态码,操作成功则不返回 | ||
| message | string | 否 | 错误描述 | ||
| fileContent | Buffer | 否 | 下载的文件的内容。如果传入tempFilePath则不返回该字段 | ||
| requestId | string | 否 | 请求序列号,用于错误排查 | ||
##### IDownloadFileOpts | ||
示例代码 | ||
| 字段 | 类型 | 必填 | 说明 | | ||
| ------------ | ------ | ---- | ---------------------- | | ||
| fileID | string | 是 | 要下载的文件的 id | | ||
| tempFilePath | string | 否 | 下载的文件要存储的位置 | | ||
#### 3. 返回结果 | ||
| 字段 | 类型 | 必填 | 说明 | | ||
| ----------- | ------ | ---- | ------------------------------------------------------ | | ||
| code | string | 否 | 状态码,操作成功则不返回 | | ||
| message | string | 否 | 错误描述 | | ||
| fileContent | buffer | 否 | 下载的文件的内容。如果传入 tempFilePath 则不返回该字段 | | ||
| requestId | string | 是 | 请求序列号,用于错误排查 | | ||
#### 4. 示例代码 | ||
```javascript | ||
let result = await app.downloadFile({ | ||
fileID: "cloud://aa-99j9f/my-photo.png", | ||
// 初始化 | ||
const tcb = require('@cloudbase/node-sdk') | ||
const app = tcb.init({ | ||
env: 'xxx' | ||
}) | ||
exports.main = async (event, context) => { | ||
const result = await app.downloadFile({ | ||
fileID: 'cloud://aa-99j9f/my-photo.png' | ||
// tempFilePath: '/tmp/test/storage/my-photo.png' | ||
}); | ||
}) | ||
// 自定义超时 | ||
let result = await app.downloadFile({ | ||
fileID: "cloud://aa-99j9f/my-photo.png", | ||
// tempFilePath: '/tmp/test/storage/my-photo.png' | ||
}, { | ||
timeout: 5000 | ||
}); | ||
// 未传入tempFilePath 可打印fileContent, 传入则进入对应目录查看文件 | ||
console.log(result.fileContent) | ||
} | ||
``` |
{ | ||
"name": "@cloudbase/node-sdk", | ||
"version": "2.0.0", | ||
"version": "2.0.1", | ||
"description": "tencent cloud base server sdk for node.js", | ||
@@ -31,3 +31,3 @@ "main": "lib/index.js", | ||
"dependencies": { | ||
"@cloudbase/database": "1.0.0", | ||
"@cloudbase/database": "1.0.1", | ||
"@cloudbase/signature-nodejs": "1.0.0-beta.0", | ||
@@ -34,0 +34,0 @@ "@types/retry": "^0.12.0", |
{ | ||
"name": "@cloudbase/node-sdk", | ||
"version": "2.0.0", | ||
"version": "2.0.1", | ||
"description": "tencent cloud base server sdk for node.js", | ||
@@ -31,3 +31,3 @@ "main": "lib/index.js", | ||
"dependencies": { | ||
"@cloudbase/database": "1.0.0", | ||
"@cloudbase/database": "1.0.1", | ||
"@cloudbase/signature-nodejs": "1.0.0-beta.0", | ||
@@ -34,0 +34,0 @@ "@types/retry": "^0.12.0", |
# Tencent Cloud Base(TCB) Server Node.js SDK | ||
[](https://www.npmjs.com/package/@cloudbase/node-sdk) | ||
 | ||
[](https://coveralls.io/github/TencentCloudBase/node-sdk?branch=master) | ||
> ⚠️ 当你计划在项目中使用 @cloudbase/node-sdk 替代 tcb-admin-node 时,请务必阅读[迁移文档](./docs/packageUpgrade.md) | ||
> ⚠️ 当你计划在项目中使用 @cloudbase/node-sdk 替代 tcb-admin-node 时,请务必阅读[迁移文档](./docs/packageChange.md) | ||
## 目录 | ||
@@ -47,5 +43,5 @@ | ||
- [存储](docs/storage.md) | ||
- [数据库](docs/database.md) | ||
- [数据库](docs/database/database.md) | ||
- [云函数](docs/functions.md) | ||
- [鉴权](./docs/auth.md) | ||
- [环境](./docs/env.md) |
@@ -31,10 +31,6 @@ import * as config from '../config.local' | ||
} catch (e) { | ||
console.log('debug:', e) | ||
// throw e | ||
} | ||
console.log('result:', result) | ||
// const getRes = await collection.doc(result.id).get() | ||
// console.log('getRes:', getRes) | ||
@@ -41,0 +37,0 @@ if (result.ids.length !== num) { |
@@ -59,3 +59,2 @@ import * as assert from 'power-assert' | ||
const insertRes = await transaction.collection(collectionName).add(insertDoc) | ||
console.log('insertRes:', insertRes) | ||
assert(insertRes.inserted === 1) | ||
@@ -67,3 +66,2 @@ | ||
.get() | ||
console.log('doc:', doc) | ||
assert(doc.data, insertDoc) | ||
@@ -173,2 +171,8 @@ | ||
.get() | ||
const addDoc = await transaction | ||
.collection(collectionName) | ||
.add({ _id: '5', category: 'hope' }) | ||
assert.deepStrictEqual(addDoc.id, '5') | ||
assert.deepStrictEqual(doc.data, data[0]) | ||
@@ -175,0 +179,0 @@ const res = await transaction.rollback() |
@@ -7,3 +7,3 @@ import tcb from '../src/index' | ||
describe('tcb.init: 初始化tcb', () => { | ||
it('mock 导入本地config报错', async () => { | ||
it.skip('mock 导入本地config报错', async () => { | ||
jest.resetModules() | ||
@@ -10,0 +10,0 @@ jest.mock('./config', () => { |
814881
280
12453
47
+ Added@cloudbase/database@1.0.1(transitive)
- Removed@cloudbase/database@1.0.0(transitive)
Updated@cloudbase/database@1.0.1