文档参考
https://doc.laf.run/guide
环境变量获取
折叠代码块JAVASCRIPT
复制代码
1
| let accessToken = cloud.env.ACCESS_TOKEN;
|
导入包
折叠代码块JAVASCRIPT
复制代码
1
| import cloud from '@lafjs/cloud';
|
主入口
折叠代码块JAVASCRIPT
复制代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
export async function main(event, context) { console.log(event.method) console.log(event.query) console.log(event.headers) console.log((event.body)["a"]); console.log(event.body.xml);
const responseText = await Promise.race([ doSth(newMessage), sleep(4000.0).then(() => timeoutFunc()), ]);
event.response.status(403); event.response.set("helo", "world"); return responseText; }
|
内部异步请求
折叠代码块JAVASCRIPT
复制代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| const data = JSON.stringify({ id: 1, messages: "asdf" });
const headers = { "Content-Type": "application/json", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36", };
const options = { method: 'POST', headers, body: data };
try { const response = await fetch('https://test.com', options); const result = await response.json(); if (response.status === 429) { return { error: '错误1' } } return { answer: "right" } } catch (error) { console.error(error); return { error: "问题太难了 出错了. (uДu〃).", } }
|
数据库
折叠代码块JAVASCRIPT
复制代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
const db = cloud.database();
const Message = db.collection('messages')
await Message.where({ sessionId }).orderBy("createdAt", "desc").limit(10).get();
await Message.add({ token, answer, ...message });
await Message.where({ sessionId }).remove()
|
常用语法
折叠代码块JAVASCRIPT
复制代码
1 2 3 4 5 6 7 8
| let str = `${a[9]}你好${b}`
let list = [];
list.unshift({a: "b"});
list.push({a: "b"});
|
微信公众号
微信消息验证
折叠代码块JAVASCRIPT
复制代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| import cloud from '@lafjs/cloud';
const { signature, timestamp, nonce, echostr } = event.query;
if (!verifySignature(signature, timestamp, nonce, token)) { return 'Invalid signature'; }
if (echostr) { return echostr; }
function verifySignature(signature, timestamp, nonce, token) { const arr = [token, timestamp, nonce].sort(); const str = arr.join(''); const sha1 = crypto.createHash('sha1'); sha1.update(str); return sha1.digest('hex') === signature; }
|
返回消息格式
折叠代码块JAVASCRIPT
复制代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
function toXML(payload, content) { const timestamp = Date.now(); const { tousername: fromUserName, fromusername: toUserName } = payload; return ` <xml> <ToUserName><![CDATA[${toUserName}]]></ToUserName> <FromUserName><![CDATA[${fromUserName}]]></FromUserName> <CreateTime>${timestamp}</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[${content}]]></Content> </xml> ` }
|
v1.5.2