Bmob的云函数是一个非常强大的模块,提供了云端代码的直接编写、数据钩子、定时任务等子模块,可以实现定时计算游戏的排行榜、拦截非法请求、处理复杂逻辑、动态调整等功能。

创建云函数

在Bmob后台中,进入应用,依次点击“云函数->添加方法”,在弹出窗口中输入云函数的方法名。如下图所示:

注意:方法名会在SDK调用时使用到

接着,你就可以在云函数的编辑器中撰写云函数了。

云函数支持NodeJs语言,编写非常简单,你只需要在onRequest方法中编写你的业务逻辑代码就可以了。

onRequest方法包含3个参数,分别是:

  • request(请求对象,可以从中获取SDK上传的参数)

  • response(回应对象,可以将云函数的执行结果返回到SDK中),

  • modules(可调用的模块,包含数据库对象、HTTP对象等)。

为方便演示,这里简单实现一个功能:接收客户端传上来的name参数,根据name的值返回不同的结果。示例代码如下:

function onRequest(request, response, modules) {
  //获取SDK客户端上传的name参数
  var name = request.body.name;
    if(name == 'bmob')
      response.end('欢迎使用Bmob');
    else
      response.end('输入错误,请重新输入');
}

其中,request.body会携带客户端上传上来的参数列表。

云函数的调用

以下提供Android和iOS平台调用云函数的示例代码,更多语言请查看我们的开发文档。

Android调用云函数

//test对应你刚刚创建的云函数方法名
String cloudCodeName = "test";
JSONObject params = new JSONObject();
//name是上传到云端的参数名称,值是bmob,云函数可以通过调用request.body.name获取这个值
params.put("name", "bmob");
//创建云函数对象
AsyncCustomEndpoints cloudCode = new AsyncCustomEndpoints();
//异步调用云函数
cloudCode.callEndpoint(MainActivity.this, cloudCodeName, params, new CloudCodeListener() {

    //执行成功时调用,返回result对象
    @Override
    public void onSuccess(Object result) {
        Log.i("bmob", "result = "+result.toString());
    }

    //执行失败时调用
    @Override
    public void onFailure(String err) {
        Log.i("bmob", "BmobException = "+err);
    }
});

iOS调用云函数

    //name是上传到云端的参数名称,值是bmob,云函数可以通过调用request.body.name获取这个值
    NSDictionary  *dic = [NSDictionary  dictionaryWithObject:@"bmob" forKey:@"name"];
    //test对应你刚刚创建的云函数名称
    [BmobCloud callFunctionInBackground:@"test" withParameters:dic block:^(id object, NSError *error) {

    if (!error) {
        //执行成功时调用
        NSLog(@"error %@",[object description]);
    }else{
       //执行失败时调用
        NSLog(@"error %@",[error description]);
    }

    }] ;