[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/leancloud/leanengine-node-sdk/master/API.md [Back]  [Original]

# LeanEngine Node SDK

 express 

```javascript
var app = require('express')();
var AV = require('leanengine');

AV.init({
  appId: process.env.LEANCLOUD_APP_ID,
  appKey: process.env.LEANCLOUD_APP_KEY,
  masterKey: process.env.LEANCLOUD_APP_MASTER_KEY
  hookKey: process.env.LEANCLOUD_APP_HOOK_KEY
});

app.use(AV.express());

app.listen(process.env.LEANCLOUD_APP_PORT);
```

## 

 Node SDK  expresskoakoa2  3 

```javascript
AV.express(options?: object)
AV.koa(options?: object)
AV.koa2(options?: object)
```

`options` 

- `onError?: function(err: Error)` Hook 
- `ignoreInvalidSessionToken?: boolean` sessionToken`X-LC-Session`  401  `{"code": 211, "error": "Verify sessionToken failed, maybe login expired: ..."}`

## AV.Object

* `AV.Object#disableBeforeHook()`
* `AV.Object#disableAfterHook()`

LeanEngine SDK  AVObject  AVObject  Hook masterKey [](https://leancloud.cn/docs/leanengine_cloudfunction_guide-node.html#)

## AV.Cloud

### AV.Cloud.define

```javascript
AV.Cloud.define(name: string, func: function)
AV.Cloud.define(name: string, options: object, func: function)
```

 `options` `func`  Request  Promise Promise  Promise  `AV.Cloud.Error` 

`options` 

* `fetchUser: boolean` `true` `false`  `request`  user 
* `internal: boolean` `AV.Cloud.run`  `remote`  masterKey  `AV.Cloud.run`  `useMasterKey` `false`

`Request` 

* `params: object` `rpc`  `AV.Object`.
* `currentUser?: AV.User` `X-LC-Session` 
* `user?: AV.User` `currentUser`.
* `meta: {remoteAddress}``meta.remoteAddress`  IP.
* `sessionToken?: string` sessionToken`X-LC-Session` 

1.x  before  Hook `request`  `response`** Promise **

### AV.Cloud.Error

```javascript
new AV.Cloud.Error(message: string, options?)
```

 `Error` Class Hook 

- `status?: number` HTTP  400
- `code?: number` 1

### AV.Cloud.run

 JavaScript SDK  HTTP 

```javascript
AV.Cloud.run(name: string, params: object, options?: object): Promise
```

`options` 

* `user?: AV.User` `remote: false` 
* `sessionToken?: string` sessionToken  `remote: true` 
* `remote?: boolean` `false`.
* `req?`: `http.ClientRequest`  Express  Request  remoteAddress 

 [](https://leancloud.cn/docs/leanengine_cloudfunction_guide-node.html#)

### AV.Cloud.rpc

 JavaScript SDK  `AV.Cloud.run` 

### AV.Cloud.enqueue



```javascript
AV.Cloud.enqueue(name: string, params: object, options?: object): Promise
```

`options` 

- `attempts?: number` `1`
- `backoff?: number` `60000`
- `delay?: number`
- `deliveryMode?: string` `atLeastOnce``atMostOnce` `atLeastOnce`
- `keepResult?: number`  `300000`
- `priority?: number`
- `timeout?: number` `15000` `15000`
- `uniqueId?: string` ID 32  UUID

### AV.Cloud.getTaskInfo



```javascript
AV.Cloud.getTaskInfo(uniqueId: string): Promise
```

`TaskInfo` 

- `uniqueId: string` ID
- `status: string` `queued``success``failed`

 `TaskInfo` 

- `finishedAt?: string` 
- `statusCode?: number`  HTTP 
- `result?: object` 

 `TaskInfo` 

- `error?: string` 
- `retryAt?: string` 

###  Class Hook

* `AV.Cloud.beforeSave`
* `AV.Cloud.afterSave`
* `AV.Cloud.beforeUpdate`
* `AV.Cloud.afterUpdate`
* `AV.Cloud.beforeDelete`
* `AV.Cloud.afterDelete`

`function(className: string, func: function)` `func`  Request  Promise  before  Hook  `AV.Cloud.Error`  500 

`Request` 

* `object: AV.Object`
* `currentUser?: AV.User`
* `user?: AV.User` `currentUser`.

LeanEngine  Hook Hook  LeanCloud 

 Hook  [Hook ](https://leancloud.cn/docs/leanengine_cloudfunction_guide-node.html#Hook_)

###  Hook

* `AV.Cloud.onVerified`
* `AV.Cloud.onLogin`

`function(func: function)` `func`  Request  Promise 

`Request` 

* `currentUser: AV.User`
* `user: AV.User` `currentUser`.
* `object: AV.User` `currentUser` hook 
* `authData: {[provider: string]: any}` `onAuthData`

#### `AV.Cloud.onAuthData`

`function(func: function)` `func`  Request  authData 

`Request` 

* `authData: {[provider: string]: any}`

###  Hook 



* `AV.Cloud.onIMMessageReceived`
* `AV.Cloud.onIMReceiversOffline`
* `AV.Cloud.onIMMessageSent`
* `AV.Cloud.onIMMessageUpdate`
* `AV.Cloud.onIMConversationStart`
* `AV.Cloud.onIMConversationStarted`
* `AV.Cloud.onIMConversationAdd`
* `AV.Cloud.onIMConversationAdded`
* `AV.Cloud.onIMConversationRemove`
* `AV.Cloud.onIMConversationRemoved`
* `AV.Cloud.onIMConversationUpdate`
* `AV.Cloud.onIMClientOnline`
* `AV.Cloud.onIMClientOffline`
* `AV.Cloud.onIMClientSign`

LeanEngine  Hook Hook  LeanCloud 

 Hook  `function(func: function)` `func`  Request  Promise  [ Hook](https://leancloud.cn/docs/realtime_v2.html#_Hook)

### 

 `AV.Cloud.start()`  AV  LeanEngine  `LEANCLOUD_APP_ID` 

 `AV.Cloud.stop()` 

## Middlewares

 Node SDK  express

```javascript
app.use(AV.Cloud.LeanCloudHeaders({framework: 'express'}));
app.use(AV.Cloud.LeanCloudHeaders({framework: 'koa'}));
app.use(AV.Cloud.LeanCloudHeaders({framework: 'koa2'}));
```

### leancloud-headers

 `X-LC`  request.AV  Express 

```javascript
app.use(AV.Cloud.LeanCloudHeaders());
```

express  `Request` koa  `ctx`

* `AV.id?`App ID
* `AV.key?`App Key
* `AV.masterKey?`App Master Key
* `AV.prod``0`  `1`
* `AV.sessionToken?`Session Token

### cookie-session

 Express  Koa  Express 

```javascript
app.use(AV.Cloud.CookieSession({secret: 'my secret', maxAge: 3600000, fetchUser: true}));
```



* `secret: string` Cookie 
* `name?: string`Cookie  `avos.sess`
* `maxAge?: number`Cookie 
* `fetchUser?: boolean` `false` `id`  `sessionToken`.
* `httpOnly?: boolean`:  Cookie `false`.

express  `Request` koa  `ctx`

* `currentUser?: AV.User` Cookie `cookie-session`  `fetchUser`  `id`  `sessionToken`.
* `sessionToken?: string` `sessionToken` Cookie

express  `Response` koa  `ctx`

* `saveCurrentUser(user: AV.User)` Cookie
* `clearCurrentUser()` Cookie

 express [](https://leancloud.cn/docs/leanengine_webhosting_guide-node.html#)

### https-redirect

 HTTP  HTTPS  Express 

```javascript
app.enable('trust proxy');
app.use(AV.Cloud.HttpsRedirect());
```

Koa 

```javascript
app.proxy = true;
app.use(AV.Cloud.HttpsRedirect({framework: 'koa'}));
```

Web Proxy Viewer  |  New URL  |  Original Page