@mpneon/cloud
微信小程序云函数框架
特性
起步
新建一个云函数 neon
,安装 @mpneon/cloud
作为它的依赖。
用例
路由
使用 app.route()
方法创建路由。
module.exports = (request, { cloud, db, ...context }) => {
const { a, b } = request.event
return a + b
}
const app = new (require('@mpneon/cloud').Application)();
app.route('sum', require('./sum'))
exports.main = (event, context) => app.handle(event, context);
在小程序端调用时,调用云函数 neon
,并传入 $path
字段表示要访问的函数路由。
wx.cloud.callFunction({
name: 'neon',
data: {
$path: 'sum',
a: 1,
b: 2,
},
success: function(res) {
console.log(res.result)
},
fail: console.error
})
获取当前请求用户
你可以从 request.user
字段(异步)获取发起当前请求的用户。
module.exports = async (request, { cloud, db, ...context }) => {
const user = await request.user
return user
}
默认情况下,会从云数据库的 users
集合中查询 _id
为当前 OPENID
的记录。如果你需要自定义解析当前用户的方法,使用 app.useUserResolver((openid, requestcontext) => Promise<any>)
。
app.route('user', require('./user'))
app.useUserResolver((openid, { cloud, db, ...context }) => new Promise(resolve => {
db.collection("users")
.where({
openid
})
.get()
.then(({ data: users}) => resolve(users[0] || null));
}))
exports.main = (event, context) => app.handle(event, context)
定时任务
若要使用定时任务,须根据小程序文档设置一个每分钟执行的定时触发器。
{
"triggers": [
{
"name": "neon.schedule",
"type": "timer",
"config": "0 * * * * * *"
}
]
}
然后使用 app.cron()
方法注册你的定时任务。
module.exports = (request, { cloud, db, ...context }) => {
console.log('Taske invoked every other minute')
}
const app = new (require('@mpneon/cloud').Application)();
app.route('sum', require('./sum'))
app.cron('*/2 * * * *', require('./task'))
exports.main = (event, context) => app.handle(event, context);
注意 app.cron()
方法只支持标准 Cron 表达式,即不支持秒和年。
License
MIT Licensed.