平台常见问题¶
Bmob有哪些优势 1.在很大程度上加快了用户产品的开发速度;对后端的支持让用户有更多的时间关注用户体验方面的设计。 2.为用户节省了服务端人员的配备和服务器租借,节省了很多成本。 3.在游戏方面,Bmob云端数据库保存玩家游戏数据,操作非常简单,用Api可以直接操作云端数据库。
Bmob有后台介绍视频吗 官方视频教程地址:视频教程
Bmob支持多少用户同时在线存储查询 一个APP支持10w+读并发,5w+写并发,只要数据库设计合理,服务器支持无限扩展,如果你的应用需要支持100w+的并发,可以联系我们。
服务器端运行在什么环境下 - 北京BGP机房 - 杭州BGP机房 - 香港BGP机房 - 海外节点(东南亚、北美等)
你们的平台稳定吗
Bmob采用南北双线,多路分流的方式,将服务器部署在国内外主流的大型服务器提供商中。部署时采用7层负载均衡技术,确保每个节点机房都能够承受大量的并发请求。而每个应用之间采用k8s容器虚拟化,确保应用之间的安全隔离性。自2013年7月创立至今,团队积累了大量的运维和服务经验,确保平台的稳定服务。
数据放在云端安全吗
1.首先,数据在传输过程中采用了requestId + timestamp + Application Key的一次性对称加密算法和服务端主动防御的技术,确保数据在传输过程中能够不被Fiddler、Wireshark等抓包工具恶意抓取进行分析破坏。
2.应用之间除采用Docker虚拟化之外,系统还定期/实时做了3级容灾备份,确保数据的可用性。
3.在软件架构层面,Bmob提供了应用层次、表层次、ACL、角色、IP白名单、签名等多种安全控制方式。如果你想更深入了解Bmob的安全架构,可以详细查看我们的数据安全文档。
Bmob支持国外数据访问吗 支持。Bmob在香港和海外部署了节点,东南亚和北美访问速度良好,欧洲也可以正常访问。如需更好的海外访问体验,可以选择海外节点。
你们支持什么平台 1.Android、iOS和鸿蒙(Harmony)三种主流的移动操作系统平台 2.Cocos Creator和Unity两种主流的游戏引擎 3.Flutter跨平台移动开发框架 4.Js/小程序/快应用支持HTML5移动开发 5.C#、PHP、Java、Python、GO、Kotlin支持PC端及后端开发 6.REST API开放API接口(可使用任何语言开发)
不同SDK的数据是否打通 当然!本质上,所有的SDK都是基于REST API开发,数据是完全打通的。
我想迁移数据到Bmob,但是user表如何迁移呢 调用REST API的注册接口来插入数据即可。
Bmob怎么用做HTML5的数据管理后台 你可以用js sdk来开发对应的html5页面,开发好之后联系我们客服,我们帮你把h5页面放到你的bmob子域名中去,给用户访问。
如何在Bmob后端构建云函数来获取其他平台的token 参考云函数开发文档,通过云函数发送HTTP请求即可实现。具体请查看云函数开发文档。
如何联系Bmob技术和商务 控制台->帮助->联系我们,或者工单
Web开发者后台相关问题¶
如何在Web后台上传文件 Bmob提供了一种非常简单的文件上传的方法:
1.在Web后台中点击进入应用程序的控制面板中,如下图所示,选择需要用到文件的表,然后点击"添加一列"按钮,这时,弹出一个"添加新的表字段"的对话框。在这个对话框中,请输入字段名称,选择字段类型(注意:请选择File类型)。

2.现在,你就可以快速上传文件了:点击"添加一行"按钮,在File字段中点击"Upload File"就可以直接上传文件。如下图所示。如果想要上传更多的文件,可以重复第二步操作。

为什么导入CSV数据之后是乱码 请将数据编码转换为"UTF-8无BOM格式编码"之后再上传。
能提供一个CSV文件参考下吗 点击这里下载CSV文件模版
使用方法:Web后台->创建应用->创建表->导入数据->选择这个CSV文件
支持导出哪些类型的数据 支持这几种类型:'string', 'number', 'boolean', 'date', 'geopoint', 'array', 'object'
能直接在Web后台上传文件吗 可以,先在表中创建需要File类型的字段,然后新增一条记录就可以直接在Web端上传文件了。
导出数据表中的数据时可以自定义字段吗
可以的。开发者后台->数据浏览->更多->导出数据,可以选择导出需要的列。

能通过在控制台添加Relation的数据吗 可以,你可以点击relation字段,进去之后添加数据
如何获取_User表中的password Bmob没有提供直接获取密码的方法。如果直接可以获取密码的话,会存在安全隐患的。如果非要这样做,你可以新增一个字段,记录明文的密码。
能不能设置主键
可以,存在重复值会留下最早创建的记录,其它的删除。

创建了数据库,可以在后台直接添加数据吗 可以
我想用Java Web开发,后台数据库用Bmob可以实现吗,需要下载什么东西 可以使用Java SDK或者自己封装,通过HTTPS调用REST API接口
web端上传文件最大支持多少 控制台上传的文件最大为50M,更大 10G+的单个文件,请使用 FTP 上传
新建一张表添加字段为Relation,只能重新添加数据吗 Web操作是这样的,但你可以用SDK,通过代码来实现数据的关联。
后台能不能支持批量上传文件? 不支持,可以自己编写脚本完成。
http请求如何访问Bmob 可以使用REST API接口进行访问。
前端框架(Vue/React/Angular等)如何与Bmob配合使用 可以使用JS SDK或者通过框架的网络请求库调用REST API接口进行请求
登录问题 能否实现只有通过验证的用户才能登 登陆成功之后,你再获取当前的登陆信息,判断这个verified字段是否为true,这样就可以实现你的想法了。
Bmob可以做微信公众平台的数据后台么 可以,使用JS SDK或REST API即可实现。
数据导出不带objectid 字段吗 这个问题我们持续跟进,因为我们无法保证objectId不被用户修改,所以大家开发的时候就没有支持导出objectId了,之后看看怎么解决这个问题。
请问服务器上的表名和列名可以修改吗? 不能修改,考虑发布后的APP会由于修改表名和列名而造成无法使用的问题。开发过程中可以通过删除再创建达到目的。
可以在PC端写tool来操作服务器数据? 可以,使用REST API接口
API请求数是实时统计更新的吗? 不是的,API请求数一天统计一次,每天凌晨3点进行统计。
数据服务常见问题¶
Bmob怎么设计赞和踩功能? 利用原子计数器 很多应用可能会有计数器功能的需求,比如文章点赞的功能,如果大量用户并发操作,用普通的更新方法操作的话,会存在数据不一致的情况。 详情请查看对应平台的原子计数器章节。
支持同步数据上传吗 不支持阻塞主线程同步上传数据的方法!
SDK请求时占用内存大吗 如果只是数据服务的话,占用内存非常小。如果涉及图片服务,需要视图片大小而定内存占用情况。
文件能不能使用批量操作 可以
查询单条数据的时候,只能通过objectId来查询么? 如果确定是只有一个的,条件查询也可以。
注册和登录的流程是怎样开发的
注册成功之后,服务器会返回sessionToken(标识用户登录成功的会话信息)给BmobUser对象,这时即可立即显示登录后台的界面,同步在后台调用登录接口进行登录操作。
登录踢人、改密码踢人相关
一处登录其他地方下线以及改密码的问题请看如下伪代码:

Bmob数据库的pointer和我自己使用外建字段的区别? pointer的好处是可以在查询的时候一并把关联的记录也查询下来,不需要二次查询。让查询的速度更快
Android平台¶
对象¶
为什么我修改表中的某个Number类型的字段,其他Number类型的都变为0呢? 继承自BmobObject的类不要用int类型,用Integer。
定义类名必须和表中的名一致? 类名和表名一致,表内字段名和类变量名一致。
插入一条数据之后怎么获得该数据的id
GameScore gameScore = new GameScore();
//注意:不能调用gameScore.setObjectId("")方法
gameScore.setPlayerName("比目");
gameScore.setScore(89);
gameScore.setIsPay(false);
gameScore.save(mContext, new SaveListener() {
@Override
public void onSuccess() {
toast("添加数据成功,返回objectId为:"+gameScore.getObjectId() + ",数据在服务端的创建时间为:" + gameScore.getCreatedAt());
}
@Override
public void onFailure(int code, String arg0) {
// 添加失败
}
});
请看代码,成功后gameScore使用getObjectId()就可以获取objectId了。
success方法中获取的数据,用全局变量接收,但是在方法外就接受不到,变量为空 请先理解同步和异步的概念,回调中的onsuccess是异步方法,是不能用全局变量接收的,可以直接在onsuccess方法中做ui层面的更新
我在User表中增加了一个Number类型的字段,设置为以1自增,但几天过去了,里面的值并未自动增加,这个自增是怎样自增的,还要去哪里设置吗? 添加字段的时候选择num类型,有一个自增的checkbox和初始值的input,填一下就可以了
场景是多个客户端共同操作同一个数据表,更新该表的一个字段的值,如何做到一个客户端更新时锁定该数据表,操作结束时解锁? 目前没有该功能,只有Number类型可以使用原子计算器达到该效果
一次查询多条数据 算是调用了几次API? 一次调用算一次
请问每条数据的objectId都是唯一的吗,我的意思是,假设有个user表,有userName和level两个属性。如果两个对象的这两个属性都相同,其objectId是否就相同? objectId是每一条数据的唯一标示,不会出现重复的。
String 数据类型最大可支持多大数据? 最大为16M
求问怎么获取上传数据后生成的objectid 保存数据成功后,你的BmobObject对象就有objectId了的。 或者你按条件查询得到的数据对象中也是包含objectId的。
数据查询必须要objectId吗?在用户数据表中,在无法获取用户objectId的情况下,如何查询一个用户是否存在,是否可以通过其他字段查询? 单条查询必须使用ObjectId,多条查询时可以添加条件来进行查询。
查询¶
查询成功,但是list只能在onSuccess方法中使用,如何在本类中的其他地方使用?
网路请求都是异步独立线程的,你用handler把数据传递出来就可以。
如果不知道objectId,是否可以通过表中的元素获得数据?
添加数据的时候,onSuccess中可以得到objectId。也可以通过条件查询得到对应的objectId的。
在Activity关闭的时候如何动态关闭查询? 查询都是一次性的,并不需要取消
bmob怎么查询一列数据并合并相同数据? 可以使用统计查询中的groupby
bmob的数据库操作方法save insert这些都有开线程吗 bmob sdk提供的操作都是在线程中运行的,对外都是提供异步的回调方法,其回调方法,比如onsuccess和onFailure等是可以再UI线程中运行的,开发者不需要额外再开线程。
Bmob查询数据结束标志 在查询的回调方法中的onSuccess或onFailure触发时都是代表这个查询结束。
Bmob能否进行多表查询? 无法用一条语句查多张表,只能单独一个一个查
怎么设置缓存 让缓存数据在listView显示 可以使用缓存查询,具体可以查看官方文档
怎么通过BmobUser的一个属性列来获取其他列的信息 使用bmob的查询功能,查询Username 等于名称的用户信息即可,使用的是addWhereEqualTo方法
我的应用想只查询最新上传的一组数据,请问该如何操作呢 可以根据时间来设置条件,再进行查询
查询中findListener中的onerror方法不执行,两次测试均是数据库无该数据的,但是程序均不执行onerror方法 没有数据不代表查询出错,当没有数据符合你的查询条件时,就会返回空,此时还是执行onSuccess的
想问问查询的时候排序有多个关键字怎么解决? 数据服务的文档中有的,在开发文档的查询数据->查询条件->排序那里: **
排序
对应数据的排序,如数字或字符串,你可以使用升序或降序的方式来控制查询数据的结果顺序:
// 根据score字段升序显示数据 query.order("score"); // 根据score字段降序显示数据 query.order("-score"); // 多个排序字段可以用(,)号分隔 query.order("-score,createdAt"); 说明:多个字段排序时,先按第一个字段进行排序,再按第二个字段进行排序,依次进行。
数据关联¶
我有个Relation字段,想用它来记录喜欢这篇文章的用户,我该怎么添加里面的数据呢? 这个问题请看 数据关联 相关文档。
Relation字段 能否像pointer一样在查询的时候一并把关联的记录也查询下来,不需要二次查询 目前并没有这个功能,建议使用pointer
activity是一个表,里面有一个BmobPointer org指向BmobUser,activity.getOrg.getObjectId总是为空呢? 查询的时候应该没有用includ查询进去
查询数据时,表中的一个字段是pointer字段,如何将这个pointer字段的一个属性作为查询匹配条件?
BmobQuery<Comment> query = new BmobQuery<Comment>();
BmobQuery<Post> innerQuery = new BmobQuery<Post>();
innerQuery.addWhereExists("image", true);
// 第一个参数为评论表中的帖子字段名post
// 第二个参数为Post字段的表名,也可以直接用"Post"字符串的形式
// 第三个参数为内部查询条件
query.addWhereMatchesQuery("post", "Post", innerQuery);
query.findObjects(this, new FindListener<Comment>() {
@Override
public void onSuccess(List<Comment> object) {
// TODO Auto-generated method stub
toast("查询成功:");
}
@Override
public void onError(int code, String msg) {
// TODO Auto-generated method stub
toast("查询失败:"+msg);
}
});
如上,就是使用内部查询就可以实现你的需求了,只需要将查询条件和表名换成你需要的就可以了~
如果一个用户要收藏一个产品应该怎么定义对象 可以使用pointer类型
删除关联关系 不能同时删除,对于不同数据表的数据只能分别执行删除操作。
** 查询时 include 两个Pointer字段后会把前一个的数据冲掉 对表 AaaaEntity 查询时 include 两个Pointer字段后会把前一个的数据冲掉,如:
bmobQuery.include("userAuthor");
bmobQuery.include("xxxxEntity");
则:
aaaaEntity.getUserAuthor.getName()返回空
如果去掉后一行
bmobQuery.include("userAuthor");
//bmobQuery.include("xxxxEntity");
或
移到后面:
bmobQuery.include("xxxxEntity");
bmobQuery.include("userAuthor");
aaaaEntity.getUserAuthor.getName() 就能正常返回值
include的用法在文档里面已经说明了的(http://doc.bmobapp.com/data/android/develop_doc/),想include多个就这样用:query.include("x1,x2");
用户管理¶
打开了邮箱验证功能,注册成功后未验证也能登录成功?
Bmob SDK中,邮箱的验证和用户的注册登录是异步的关系,也就是说,即使用户没有点击邮箱验证功能,也是一样可以登录成功的。如果需要限制用户的登录或者只能查看到登录后的部分功能,可以使用BmobUser.getEmailVerified。
Bmob如何实现用户登录之后获取数据读写权限,以及如何实现登出操作的?
用户登录之后,我们会把获取到的用户信息保存在本地文件中,你可以通过BmobUser.getCurrentUser方法获取对应的值,当调用 logout方法之后,这些缓存的数据就会清除。如果不调用logout方法,下次重新打开这个应用,还是可以通过BmobUser.getCurrentUser方法获得上次登陆的用户信息,从而判断是否登陆过。
清除缓存用户对象只是对本地清除,没有真正向服务端注销登录的账号,请问是怎么去处理这个问题 BmobSDK中的BmobUser登录,只是登录成功后缓存用户信息到本地。服务端并没有记录用户的登录状态,所以退出登录并不需要向服务器注销。
登录时异常退出MyUser declares multiple JSON fields named mobilePhoneNumber MyUser定义了一个Bmob的系统字段呀,你可以看看用户管理那里的文档,里面有介绍说明BmobUser的特有属性,以下摘抄自文档:
BmobUser除了从BmobObject继承的属性外,还有几个特定的属性: username: 用户的用户名(必需)。 password: 用户的密码(必需)。 email: 用户的电子邮件地址(可选)。 emailVerified:邮箱认证状态(可选)。 mobilePhoneNumber:手机号码(可选)。 mobilePhoneNumberVerified:手机号码的认证状态(可选)。
第三方登录之后该怎么获得User的objectId呢? 登陆成功之后,系统就会给你生成一个objectId的,你正常的通过 user.getObjectId() 就可以得到了
如何修改user表中其他用户的数据 直接在web控制台修改或者使用masterkey
修改数据提示User cannot be altered without sessionToken Error. 这种情况一般都是没有进行用户登录就对用户信息进行更新导致的
更新用户update时失败,9012错误 9012是context is null,没传上下文对象
用了getobjectId方法为什么还是显示objectId cant't be empty。
public void setsj(View v){
final User setUser = new User();
List<String> a=new ArrayList<String>();
a.add("5cd431f659");
a.add("4c2184e8ea");
setUser.setFriends(a);
setUser.update(this, setUser.getObjectId(), new UpdateListener() {
@Override
public void onSuccess() {
// TODO Auto-generated method stub
Log.i("bmob", "更新成功:");
toast("更新成功");
}
@Override
public void onFailure(int code, String msg) {
// TODO Auto-generated method stub
Log.i("bmob","更新失败:"+msg);
toast("更新失败");
}
});
}
// 这段代码是通过点击一个button然后更新我写好的数据,可一直显示更新失败,查看logcat显示objectId cant't be empty。可是我有用setUser.getObjectId()啊,为什么还是说ID为空?
你的user并不是通过登录得到的,而是自己生成的,并没有objectid,需要从服务器上获取的数据才有objectid
更新了用户信息后 服务器都更新了数据 但是本地缓存用户没有更新 更新用户信息后需要从新登陆,本地用户信息才会更新。
登录后在个人资料中上传头像在用户表,并且要头像和用户要对应。 上传图片成功后,将BmobFile对象更新到当前用户的头像字段中即可。
在数据下_User 下把email添加后为啥 emailVerified Boolean 这一栏显示的是false 是什么原因呢 该字段需要注册用户点击了验证邮件才会主动设置为true
数据实时功能¶
如何实现Bmob服务端向Android应用发送实时通知?如某个数据过高需要提醒APP用户 以使用实时数据监听功能来实现
登录之后,怎么获取用户的信息并显示出来 登录成功之后就可以通过getCurrentUser方法获取本地用户信息
ACL和角色¶
例如我已经有一个角色叫Chief,我怎么用代码给它添加成员?直接new BmobRole("Chief")然后再getUsers().add然后再save?
但这个代码不应该是新建一个角色吗?如果是用BmobQuery
//创建HR和Cashier两个用户角色(这里为了举例BmobRole的使用,将这段代码写在这里,正常情况下放在员工管理界面会更合适)
BmobRole hr = new BmobRole("HR");
BmobRole cashier = new BmobRole("Cashier");
//将hr_zhang和hr_luo归属到hr角色中
hr.getUsers().add(hr_zhang);
hr.getUsers().add(hr_luo);
//保存到云端角色表中(web端可以查看Role表)
hr.save(this);
//将cashier_xie归属到cashier角色中
cashier.getUsers().add(cashier_xie);
//保存到云端角色表中(web端可以查看Role表)
cashier.save(this);
是否可以针一行数据的某一个字段控制读写权限 ? 是否可以针一行数据的某一个字段控制读写权限 ?例如,UserA 发了一条说说,这条说说只有UserA可以写,其它用户可以读,但是其中有一个点赞计数字段,所有用户都可以对这条说说点赞,点赞后,这个点赞计数字段值就加1。 ** 没有针对一个字段控制读写的,如果需要,可以将这些需要控制的另外建一个表,使用pointer字段指向该表来获取
地理位置¶
基于地理位置的查询是根据什么排序的 是按照距离从近到远来进行排序的
自动更新¶
自动更新生成的表和文档上的不一致 没有调用initAppversion方法
自动更新,如何实现只获取是否有新版本,不弹出对话框。 目前SDK中暂没有这个功能,后续版本会考虑添加
文件¶
Bmob如何实现储存和传输图片?
通过BmobFile类上传图片,上传成功之后,会返回一个BmobFile,你从这个BmobFile可以得到文件上传之后的url,把这个url保存到你的对应表中。下载的时候,先查询数据表得到url,然后下载这个图片就可以了。
Bmob如何将整批图片下载在本地呢? 首先先查询,得到全部数据,从而得到图片的url列表,再用一些下载文件的代码把图片批量下载下来。
BmobFile类最多可以保存多少张图片?
BmobFile类只能保存一张图片,你可以用BmobFile上传图片,得到图片的url,保存的字段用string或者array。
怎么让表的某个字段包含多张图片? 用array来存储文件的url
能把json文件放在bmob里,并配置一个专门的地址,然后APP通过这路径下载或者读取吗? 用文件服务实现即可。
怎么通过objectID获得文件的下载路径?
// 根据objectId查询数据
BmobQuery<GameScore> query = new BmobQuery<GameScore>();
query.getObject(this, "a203eba875", new GetListener<GameScore>() {
@Override
public void onSuccess(GameScore object) {
// TODO Auto-generated method stub
toast("查询成功:");
//获得playerName的信息
object.getPlayerName();
//获得数据的objectId信息
object.getObjectId();
//获得createdAt数据创建时间(注意是:createdAt,不是createAt)
object.getCreatedAt();
// 假设GameScore对象中有一列是BmobFile类型的icon
// 如下取出查询到的数据中的BmobFile类型,得到下载地址
BmobFile icon = object.getIcon();
String url = icon.getFileUrl();
}
@Override
public void onFailure(int code, String arg0) {
// TODO Auto-generated method stub
toast("查询失败:"+arg0);
}
});
9015your uploading task is canceled. 安卓文件上传无响应 调用了bmobfile.cancel()方法会出错该提示。
errorCode:9015,errorMsg:请检查网络是否可用! 请检查手机设备网络是否正常,以及请求的域名是否已备案解析、能否正常访问。
表中有一列数据为BmobFile类型 ,数据为.TXT格式 ,怎么将文件下载下来 查询这一行数据,在结果中从这一列对应的BmobFile对象中用getFileUrl()得到文件的地址,再进行下载。
为什么我上传的文件(图片)已经删除了,但是通过url仍然可以访问到图片呢? CDN缓存的,过一段时间就会完全删除
其它问题¶
我使用BmobUser.login接口,返回onFailure的参数code分别对应什么情况?有说明文档么? 错误码列表
App_ID is not setted出现什么原因? 初始化BmobSDK时需要传入你自己应用的ApplicationID
Duplicate files copied in APK META-INF/maven/com.squareup.okhttp/okhttp/pom.xml 导了重复的包,请排除重复依赖。
android Bmobquery 开两个线程 分别查两个不一样的表,返回数据有问题 sdk中的很多方法本身就是在子线程中执行的,开发者没必要开子线程(创建子线程和线程池管理SDK都封装好了)。
查询出了回调函数,List就变空了 请先理解下同步和异步的概念,bmob目前的接口提供的都是异步回调函数,建议在onsucess/onFailure中进行ui操作
Bmob的各个SDK可以使用Application的Context来初始化吗 可以的。最好是用Application的Context来初始化。
移动端和WEB端能用BMOB作为云端,实现数据共享么? 可以的,使用同一个app id来进行操作即可
真机运行时控制台输出 Error:warning: Ignoring InnerClasses attribute for an anonymous inner class 可以在app的build.gradle的android标签下添加如下:
lintOptions {
ignoreWarnings true
}
把应用装到手机很慢,一直在Gradle Build 如果你确定你的应用所需的jar包已经下载完了,可以将gradle设置成离线模式
BmobSDK能导入源码开发编译吗 BmobSDK目前并未开源
邮箱验证用哪个SDK 使用数据服务SDK即可
sdk怎么和Retrofit等第三方库一起使用呢 出现冲突问题的原因是第三方库依赖的okhttp和SDK中的okhttp重复导致的,解决方式是在依赖配置中exclude重复的库,例如:
implementation ('com.squareup.retrofit2:retrofit:2.1.0'){
exclude group : 'com.squareup.okhttp3'
}
iOS平台¶
对象¶
查询表内容时不能获取到objectId的值,通过[obj objectForKey:@"objectId"]获取到的是空值,其他字段是正常的 BmobObject有一些基本属性,objectId,createdAt,updatedAt等,直接获取就可以了,如bmobObject.objectId。
查询时可以设置只从本地缓存获取,但是创建和保存时是否能够只保存到本地缓存呢? 只有查询有缓存,其它操作没有缓存。
iOS 怎么获取到创建日期啊 NSLog(@"%@",[NSString stringWithFormat:@"%@", Myobject.createdAt]);
bmob 怎样用代码写唯一键 唯一键只能在控制台设置
我的bmob对象中有一个属性是boolean属性,请问在ios代码中怎么设置它? BOOL cheatMode = [[object objectForKey:@"cheatMode"] boolValue]; isStudent = [NSNumber numberWithBool:NO]; 用以上的方法来设置。
原子计数器怎么用 查看开发文档原子计算器小节。
在iOS中 在代码中如何创建一个空表 只包含各列的属性 而不创建具体的一条数据。 该需求无法可以通过在web控制台添加列来实现。
如何删除表中所有的数据?(只知道表名的情况下) 先查询该表所以数据,获得数据后遍历删除~
可不可以批量创建数据 可以。请查看开发文档批量数据操作小节
如何存储比较复杂的数据类型?比如数组里包含字典,字典里再包含数据 一般的数据类型使用使用JSON格式都可以存储的,可以多了解一下JSON格式
'Invalid type in JSON write (CLPlacemark)' CLPlacemark类型熟悉无法写入 对象类型属性是无法写入的
查询¶
iOS端集成 查询单条数据,只知道某个value的具体值,如何查询相应的该条数据的其他值? 使用多条查询并加上你的约束条件就可以了
iOS 查询条件是boolean 应该怎样设置? 类似于以下形式
[bquery whereKey:@"playerName" notEqualTo:[NSNumber numberWithBool:NO]];
我想让模糊查询的条件key为所关联的_User表中的username 怎么弄 你好,文档中有关于模糊查询的介绍查询
BmobQuery查询多条数据时,查询结果无法传出 查询是异步的,可以采用通知机制来传递返回的数据,或者是把操作逻辑放在block里
user表查询返回的没有自定义列的数据,只有username自带属性 注意使用objectForKey来读取数据,而不是valueForKey。
iOS 如何判断表内存在某列存在某项值 然后作为类方法返回值返回呢? 查看以下文档中的"列值是否存在"小节开发文档
支持一次可以查找多张结构类似的表吗 不支持
数组¶
IOS 如何 查询 数组
BmobQuery *bquery = [BmobQuery queryWithClassName:@"GameScore"];
//查找GameScore表所有数据
[bquery findObjectsInBackgroundWithBlock:^(NSArray *array, NSError *error) {
for (BmobObject *obj in array) {
//打印array
NSLog(@"obj.array = %@", [obj objectForKey:@"array"]);
}
}];
删除array数据类型的一个元素 开发文档数组小节
数据关联¶
怎么获取relation中的数据? 假设你有一个帖子(Post)类和一个系统默认的用户(User)类, 而每一个帖子(Post)都可以被不同的用户(User)所喜欢。 如果帖子(Post)类下面有一个Key名为likes,且是 Relation 类型, 存储了喜欢这个帖子(Post)的用户(User)。那么你可以找到喜欢过同一个指定的帖子(Post)的所有用户:
BmobQuery *bquery = [BmobQuery queryForUser];
[bquery orderByDescending:@"updatedAt"];
BmobObject *obj = [BmobObject objectWithoutDatatWithClassName:@"Post" objectId:@"a1419df47a"];
[bquery whereObjectKey:@"likes" relatedTo:obj];
[bquery findObjectsInBackgroundWithBlock:^(NSArray *array, NSError *error) {
}];
如何查询多个关联关系 如果查询多个关联关系,可以使用以下方法,使用逗号(,)操作来使查询中包含多个属性
[bquery includeKey:@"column1,column2,..."];
iOS-如何判断列值Pointer类型里的数据不为空 可以用下面的方法来实现~
//设置查询中该字段是有值的结果
-(void)whereKeyExists:(NSString *)key;
//设置查询中该字段是没有值的结果
-(void)whereKeyDoesNotExist:(NSString *)key;
Relation关系,如何进行逆向查询? 基于User可以点赞Post,我现在在Post表中建立了一个Relation关系,指向User;借此我可以知道,喜欢了某一篇Post的User都有谁。 现在我还需要知道某一个User喜欢了哪些Post,也就是利用User的ObjectID查询Post表的内容。貌似Bmob的Relation关系与数据库里面的多对多关系(借用建立中间表实现多对多)不同,不知道该怎样实现我所要的查询? 这个没法直接逆向查询的,你可以使用pointer来完成你的需求,重新建立一个表,两个字段,一个指向点赞者,一个指向点赞人
iOS中怎样同时查询两张表,做到获取两张表的内容,不是一张表的内容 可以采用pointer类型,使得一张表指向另一张表,再使用include接口可以来获得
用户管理¶
注册的时候如何给User表自定义的字段插值?
有个BmobUser类用来操作用户相关的数据
BmobUser *bUser = [[BmobUser alloc] init];
[bUser setUserName:@"小明"];
[bUser setPassword:@"123456"];
//age 为自定义
[bUser setObject:@18 forKey:@"age"];
[bUser signUpInBackground];
打开了邮箱验证功能,注册成功后未验证也能登录成功?
Bmob SDK中,邮箱的验证和用户的注册登录是异步的关系,也就是说,即使用户没有点击邮箱验证功能,也是一样可以登录成功的。如果需要限制用户的登录或者只能查看到登录后的部分功能,可以使用[[[BmobUser getCurrentUser] objectForKey:@"emailVerified"] boolValue]方法。
Bomb邮箱认证是只需要开启邮箱认证就可以了吗?里面的内容要不要设置啊,比如发送给谁,邮箱地址什么的? 开启就可以了使用了。内容可以不用设置,发送给谁、邮箱地址是什么是由SDK注册的时候用户填写的。
第三方用户授权注册登录后,如何绑定手机号呢? 可以使用该绑定手机号的功能,请查看开发文档手机号相关功能小节
退出登录接口 [BmobUser logout];
手机号是用户名,在忘记密码这一块,用什么来方法来查询用户名?用什么回调方法去判断用户是否已经注册 可以直接使用条件查询来判断是否已经存在该用户
ios中 ,怎么判断用户注册或是登陆的时候 处于联网状态还是非联网状态 可以使用网络状态监听(如Reachability库)来判断网络连接状态。
请问每次登录后都会缓存用户的信息,但是好像没有缓存密码,那怎么实现缓存登录,也就是下次自动登录。 密码是不会保存的,启动应用时直接使用下面代码判断用户是否已经登录
BmobUser *bUser = [BmobUser getCurrentObject];
if (bUser) {
//进行操作
}else{
//对象为空时,可打开用户注册界面
}
数据实时功能¶
客户端监控某个表或某一行数据,会使客户端电量或网络流量增加吗?如果表数据有变化时,是通过推送机制来通知客户端的吗? 不会消耗多少网络流量的,是用websocket机制来通知客户端,不是通过推送,也没有离线消息的概念,一旦socket连接关闭,就不会收到后续消息。
ACL和角色¶
如果每个用户都有写入权限,安全应该怎么做? 可以设置ACL,详情请查看文档开发文档ACL和角色小节
ios安全问题,如果每个用户都有写入权限,安全应该怎么做? 可以使用ACL来限制读写权限。
文件¶
iOS上传文件只支持路径上传吗,不支持iOS的NSData或者image对象上传吗 支持路径和NSData上传,可以查看BmobFile的头文件,里面有相关注释
file字段中如何上传多张图片? 一个file字段只能保存一个图片文件,多个图片可以使用数组将图片url保存下来
File类型是视频文件,能不能在ios端直接通过File的地址播放视频呢? 支持
iOS 从相册获取到视频 然后如何上传 直接通过路径或者NSData都可以
上传视频失败
这种情况是初始化没有完成就开始进行请求导致的,可以监听kBmobInitSuccessNotification通知,监听到该事件后再上传即可
在ipv6下.无法获取到资源文件 先看看ipv6的环境是否设置正确设置方法,再看看相应的下载库是否支持ipv6。
文件服务使用CDN上传是指什么? 使用CDN加速文件上传和访问,服务会更稳定,接口不变。
地理位置¶
地理位置查询 返回的结果是已经排序的 是排序好的,由近到远的顺序。
想查询10KM内的所有用户,并且按用户的某个字段属性排序,应该怎么做呢?因为发现只要按地理位置设置了条件,不管排序条件怎么设,最终都是按距离远近进行排序的... 做不了的,有地理位置条件的时候都是按从近到远排序的。距离相同再按别的排序
其它问题¶
有iOS 点赞功能的demo吗? 有的,Bmob点赞案例 实现的用户注册、用户登录、发贴、显示所有帖子资料以及对帖子进行点赞的功能 。
请问有对应的swift开发方法吗? Swift项目中使用BmobSDK可以看这个文档:Swift项目中使用BmobSDK
数据库中file字段无法导出吗? 暂时只支持7种基本类型的导出:字符串(String)、数字(Number)、布尔值(Boolean)、 数组(Array)、对象(Object)、日期(Date)和地理位置(GeoPoint)
出现错误"msg":"authorization has expired","code":40300006 应用太久没有请求导致的,先在控制台恢复一下应用数据就可以
等到查询成功得到结果后再执行下一步怎么办? 需要放在block中进行。
出现错误Error Domain=cn.bmob.www Code=20002 "connect failed!" UserInfo={NSLocalizedDescription=connect failed! 网络问题,连接失败了,请尝试更换网络再次进行连接。
The dependency BmobSDK is not used in any concrete target.
你好,应该是你的cocoapod升级了,新版本的需要指定下载的库给特定的target使用,如下,把CocoapodsDemo换成你的target名即可~
target "CocoapodsDemo" do
pod 'BmobSDK'
end
想迁移一个app的某个表数据到另一个app,怎么实现 可以直接使用A应用的备份数据生成新应用提供给B应用使用,点击进入应用,设置-备份还原,选择最近一次备份生成新应用即可
错误Error Domain=cn.bmob.www Code=100 "db stopped" UserInfo={NSLocalizedDescription=db stopped} 应用可能太久没使用被停止了,到控制台对应的应用的设置那里恢复一下数据
Cocoapod集成后打开报错,提示缺失库。 打开后缀xcworkspace的文件,而不是后缀xcodeproj 的文件
Cocos2d-X / Cocos Creator¶
Bmob支持Cocos Creator吗? 支持,请查看Cocos Creator对应的数据服务开发文档。
BmobQuery查询 怎么查看返回的data? CCLOG("%s",(const char*)data);或者是BmobLog::bmob_log()
要添加头文件?
不是添加文件的问题,是你的SecondScene没有实现BmobSaveDelegate接口,你实现BmobSaveDelegate接口就好了.
bmob中的cocos2d-x怎么不提供静态和动态库!而且里面还存在多种编码格式!请提供一下bmob coocs2d-x的动态库和静态库。或告知相信解决办法。 目前暂不提供。
CSharp¶
为什么我调用支付应用无论是支付宝还是微信点击都没有反应呢(请教一下unity接支付) 目前暂不支持Unity支持
unity端 查询表,会出现失败情况 失败原因 Failed to connect to Bmob API域名 port 443: Timed out, and response content is UnityEngine.MonoBehaviour:print(Object) 提示连接超时,先检查一下网络状况。
unity不能缓存用户吗? c#没有进行用户缓存
Bmob能存放Unity的AssetBundle么 可以使用文件上传来存储~
如何通过SDK删除用户表_User的数据 可以通过调用REST API接口+master key来完成删除用户
C#SDK,使用Find功能,我自己封装一层查询的方法,想要获得bool的返回值,应该怎么实现 不能返回,只能使用回调,因为Find方法是异步执行的.
请问在c#sdk可以使用master key吗?还是说要自己重新写? 不可以直接使用的,只有REST API api可以使用master key,你可以使用C#的http请求api来调用REST API api
Bmob如何实现两张表的关联呢? 比如我需要将User表与Role表进行关联,登录用户后,系统可以通过User的帐号来获取与之相应的Role表里面的信息? 可以,用列的pointer或者relation类型,具体用法看文档
Unity可以使用短信验证么,为什么找不到API 可以使用Unity的网络访问接口,调用REST API来使用短信验证。
unity3d sdk 打包到IOS上报错 请确保使用最新版本的Unity SDK,并检查IL2CPP兼容性配置。
怎么做点赞的用户唯一性,要做点赞,可以用原子计数器,但是无法知道是哪个用户点的赞,而且每个用户只能最多加一个赞,用Array来存用户objectid可以,但是存在多用户同时点赞相互覆盖对方的objectid的情况,请问有什么办法可以解决吗? 可以重新建立一张表,两个pointer字段一个指向点赞用户,一个指向被点赞的内容。
怎样把github上下载的unitysdk注入到unity project里面 官网的文档比较老没有同步更新。直接看下案例(接下来把文档整理下): https://github.com/bmob/bmob-demo-csharp/tree/master/examples/bmob-unity-demo libs路径: https://github.com/bmob/bmob-demo-csharp/tree/master/examples/bmob-unity-demo/Assets/libs
untiy 开发怎么集成周围的人功能,可以做这个功能吗 大概怎么个思路 有相关的文档吗? 可以采用地理位置来实现,我们有现成的api返回一定范围内的用户记录。
C# BmobRelation做粉丝和关注怎么做 看RoleTest这个例子,https://github.com/bmob/BmobSharp/blob/master/BmobTest/BmobTask.cs
bmob查询时记录返回值的表必须是自己新建的表吗?c#里不能用datatable吗? 返回值都是你创建的表,不一定是新的。这样C#才能映射到对应的object中去,让你对象化调用。
bmob使用指定列查询时会多出几种数据,分别是_type,,createdAt等。 是的,这些是默认的系统列,一定要有的。
C# sdk 只可以用Unity开发吗?visual c#可以用这SDK么? C# SDK可以用来开发Unity、Visual C#等程序。
JavaScript¶
请问比目有TypeScript的前端sdk吗? 目前提供JavaScript SDK,TypeScript开发者可以通过REST API进行对接。
前端框架(Vue/React/Angular等)如何与Bmob配合使用 一般这种情况需要将和Bmob的数据交互封装为一个service,从service中返回数据。使用JS SDK或直接通过HTTP请求调用REST API接口均可。
Bmob实时数据监听可以无视ACL吗? 实时监听功能不受ACL的限制。
JS SDK可以增加模糊查询吗 目前JS SDK已支持模糊查询,也可使用REST API接口实现模糊查询功能。
bmob的query查询可以做对指定列做sum之类的聚合查询吗? 可以。具体查看JS使用文档
JS版里有多图片上传吗 JS版没有多图片上传,需要自行处理
js中用户登录返回的session是不是都一样? 同一个用户多次登录返回的SessionToken是一样
PHP¶
php为什么添加数据的时候字段的值为中文就会出错 检查下你的php编码,建议改为utf-8编码。
有没有PHP的SDK? PHP SDK请查看Bmob官方GitHub仓库。
使用PHP CURL 推送消息的代码,推送不成功,能否给个例子 请检查证书是否设置好
操作数据库的话,比如更新两个表,数据回滚有没有? Bmob暂时没有事务操作,你要想同时更新两个表的话,可以使用批量操作。
** test.php出现unauthorized 下载sdk之后,修改了配置文件的Application ID和REST API Key 运行test.php出现BmobException: [0]: unauthorized app id 或 REST API key不正确
php 这边可以插入关联对象吗? 现在官方有生成关联对象的方法 : 具体在bmob官方php接口中的BmobRestClient.class.php文件中的dataType()方法,可以自行阅读
bmob 最多能取多少条数据 一次最多1000条
bmob bql多表查询如何实现 目前不支持多表查询
php如何使用get()方法取得不只100条数据?(PHPSDK如何循环获取数据?) 请使用分页查询,设置limit值,limit值默认为100,可以根据需要进行设置,具体可查看php文档https://github.com/bmob/bmob-php-sdk/tree/master/doc_develop中的分页查询章节
获取表中所有数据后怎么单个输出自己需要的数据 查询后返回的是对象数组,您只需要遍历该数组即可。
PC上如何使用Bmob?PC上只能用C#和PHP开发吗? PHP是我们官方出的SDK,你还可以根据restapi文档开发更多的SDK,非常简单。开发的时候需要注意点的是:1、https协议的问题; 2、header 和 body 的问题; 3、发送方式的问题,如POST、GET、PUT、DELETE。
我有两个表,_User可以放用户的数据,另一个表的password怎么设置成密码? 只有使用_User表的密码才能使用BmobUser的功能,否则接口需要自己再写
实时数据是什么原理?是客户端轮询吗? 客户端与服务器维护了一个长连接,有消息时由服务端主动推送消息
REST API¶
RestApi 如何进行ACL查询呢?比如有一张表,设置了某条数据,某个用户才能读取查看,那该用户如何获取该条数据呢使用RestApi 普通的查询就可以获取了,只要设置了ACL,其它使用就是正常的读写,如果没有权限会有提示
上传成功,移动文件位置,请问keyoffile 和group代表什么?请问我用C#调用restApi上传文件成功,想把文件移动到指定的位置,文档说用PUT请求,发送data: {keyOfFile:{"__type":"File","group":"upyun","filename": fileName, url: url},请问里面的keyoffile 和group代表什么 keyOfFile表示你存文件的那个表的字段名,group填个group1就可以了
STM32主板上其他模块获取到的数据怎么通过GPRS上传到服务器上 得看你的板子是否支持https请求,如果支持https请求则可以直接使用REST API接口进行上传
RESTAPI 的文档中提到了发送请求创建ACL规则时的body内容,请问发送该请求时的url是什么? 访问哪张表,就给那张表的acl字段进行更新就可以了
bql是否支持limit order by 支持,写法如下bql=select * from VersionInfo limit 0,1 order by -version,limit 后面跟两个参数,第一个表示跳过的记录,第二个表示返回的记录数
restAPI只能通过443端口https访问不能通过80http访问吗? 是的,只能通过htts访问
RestApi如何让数据库的某一字段增加1 使用原子计算器来实现
想通过GPRS模块利用tcp协议上传数据,利用restapi,怎么确认云服务器的ip地址? restapi都是通过https协议来进行请求的
在Android应用中,不使用BmobSDK,仅用RestAPI, 做到接收推送消息 发布推送可以不使用sdk,但接收推送需要用到。
restAPI 使用短信验证码进行密码重置问题 用短信验证码进行密码重置 的接口 https://你的API域名/1/resetPasswordBySmsCode ,从接口描述来看,需要上传的信息只有 验证码和新密码,用户的 session 或手机号都不需要上传。 那后台如何知道这个验证码是哪个手机号发来的呢? 后台是根据你的手机号来生成验证码的,服务端可以知道具体的验证码对应哪个手机号,请放心使用
我需要多图上传,云端数据库的表应该怎么处理多图逻辑,类似于qq空间的多图上传。 可以在图片上传后把url保存在一个数组当中
如何用Rest api创建表设置唯一键 唯一键的的设置暂时没有开放restapi接口,我们会考虑进去,后续加入。
使用Pointer能否"反向"查询? 有一个用户表User,一个公司表Company。每个用户都有一个Pointer字段指向某一个公司。请问如何在查询公司信息的时候,一次性把公司包含的所有用户都查出来? 目前没有这样的功能,只能在查询到具体的公司信息后,再用Company对象去约束用户表,把该公司下的用户信息查询出来
可否使用C++集成 用restapi文档对接C++就可以了
如何比较updatedAt字段 例:where={"createdAt":{"$gte":{"__type":"Date","iso":"2011-08-21 18:02:52"}}}
如果列没数据为空,返回行据然列字段名都不返回 Bmob使用的MongoDB数据库,该数据库是无模式的,也就是说您并不需要事先设置列值,而对于某个对象,如果你没有明确设置其值,那么该值就是空的,不存在默认值。
我在一张表中加关系性字段,为什么是在关联表里新建一行,而不可以选择关联表里已经存在的对象 目前只能通过请求添加relation关系,web端无法添加。
在【快速入门】【RestAPI快速入门】的CURL例子中的URL的"GameScore"是什么意思? 在【快速入门】【RestAPI快速入门】的CURL例子中的URL的"GameScore"是什么意思?我需要将这个"GameScore"改为我的应用名字吗?还是改成我的表的名字? GameScore是表名,你可以改为你自己的表的名字。 application id才是对应你的应用。
restAPI一个post请求后,提示error:unauthorized是什么意思 发送方式有问题,没有把application id 和 rest key正确发送到Bmob后端
使用httpClient POST请求一个接口返回的错误信息content is empty. 错误的含义:post请求里body内容为空
Master Key不能用在RestApi上吗? 可以。masterkey是超级权限,不会受到表是否只读的限制,对于restapi、云端代码和SDK都一样的。
restApi中注册用户邮箱验证功能,可不可以在注册时emailVerified直接赋true 不行的,emailVerified是系统内置的字段,后端有邮件的触发行为,不能直接的赋值为true。如果你不想用这个字段,完全忽略就可以了。
restApi查询表可以去掉重复的记录吗 就像sql的 distinct 暂无该功能。
restapi 过滤用中文过滤不了。 where={"name":"guangzhou"} 这个ok where={"name":"广州"} 这个不行 注意使用urlencode编码,不会存在中文匹配不了的问题的。
ajax不支持非标准的http请求头,像"X-Bmob-Application-Id"这种非标准的请求头,在ajax中是不被接受的,当ajax请求中设置了"X-Bmob-Application-Id",这个请求的method就变成了"options"这个非标准的方法。 js的调用请使用bmob提供的js sdk,在sdk中已经解决了这个问题
在我不知道用户密码的情况下 可以通过其他字段进行查询user用户表吗 可以查询
如何在线测试RestApi 使用Postman或其他API调试工具就可以进行调试。Postman下载地址。
Postman发起数据请求没有反应 首先先检查本地网络,通常是因为本地网络或者Postman没有成功发出数据请求,其次可以打开Bmob控制台查看应用状态进行测试。
其他语言用RestApi开发遇到请求security的错误 请查找相关语言访问HTTPS的配置问题。 如PHP用CURL开发时,需要添加如下脚本:
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($c, CURLOPT_SSL_VERIFYHOST, FALSE);
关于where条件的问题
有开发者提出用PostMan请求的时候没有问题,但是用Java请求构造了where查询条件的时候有错(请求的格式大致如, https://你的API域名/1/classes/Footballer?limit=20&where={"location": {"$nearSphere": {"__type": "GeoPoint","latitude": 32.31735060,"longitude": 118.32457035 }}} )。
这个问题是因为特殊字符导致的问题,大家可以参考以下的解决方案:
顺便说一句,PHP中的话,可以直接用http_build_query方法构造请求参数。
Restapi有IM吗? restapi可以发送推送信息,也可以通过get的方式获取聊天内容,但没有开放长连接服务,也就是说用restapi可以实现im功能,但方法只能通过定时器+get数据的方式。
哪里可以看到错误码 点击这里可以查看错误码列表。
云函数常见问题¶
使用云函数需要掌握什么语言
Javascript,因为云函数是用Nodejs部署架构的。
云函数能做什么事情
云函数的推出是为了给大家解决更多后端业务逻辑的问题,让大家尽可能把更多的业务逻辑挪到云端,实现更快的更新迭代。目前,云函数除可以自由操作云端数据库外,还提供了邮件模块、HTTP模块和事件模块等,方便大家自由发挥。
云函数能上传文件吗 暂不支持。
如何调试云函数 - Bmob在Web端(当前云函数的下边)为大家提供最简单的云函数的调试工具。 - 云函数本地化调试工具:https://github.com/bmob/bmob-cloud-tool 。
云函数或者android上update能否不用objectid用组合条件 只能根据objectid来,在查询返回的结果集中有objectid
如何使用同步的ohttp.post请求 用eventproxy
相同的代码,在Local中可以返回正确的结果,在Server中返回错误。请问如何解决? 把本地的nodejs版本改成和云端一样,然后调试通过就可以了
bmob的短信服务端验证接口云函数怎么做?要发送一个post请求 使用云函数发送http请求即可
云函数能否实现 WebSocket ? 云函数无法使用第三方库
往表中添加基本类型的数据是调用数据库对象的insert方法,而添加关联关系对象是用add方法??那我的表里有这两种数据类型,该怎么添加数据 分别存储
保存一个Object类型字段的值为null的时候会报错 保存为这样{}
如何实现一个签到的逻辑 在用户表添加一个字段--签到时间,当用户发送请求的时候,更新这个签到时间,如果签到时间为今天,说明已经签到
where语句如何查询24小时之前创建的记录? 查询createdAt在24小时之前的记录就可以了
删除数据库记录只能用objectId吗?不能用where条件吗 只能用objectId,where条件用于查询,查询后的结果集中会有ObjectId的。
云函数怎么设定where条件
"where":{
"updatedAt":{
"$lt":{"__type":"Date","iso":"2014-01-29 11:33:53"}
}
在查找数据库的回调里面再查找,不能收到回调消息 不能在回调里面for循环嵌套查询,只能取一次,然后再取一次。
云函数可以查询支付订单吗?返回订单结果和数额之类的,有相关函数吗 可以使用云函数去调用REST API接口来查询
云函数可以实现抓取别的网页信息吗?比如说,我客户端去请求云函数,让云函数实现抓取某个咨询网站的信息 可以,使用云函数的http请求抓取即可。
请问云函数可以发送短信吗? 可以通过云函数调用REST API接口来实现。
云函数更新用户表错误,但是最后返回的err包含错误信息 {"code":206,"message":"User cannot be altered without sessionToken Error."}
必须先登录才能更新
请问云函数怎么返回JSON数据
使用JSON.stringify(data)将对象转为字符串后,用response.end(str)返回。
如何在云端请求微信 参考云函数开发文档
请问云函数如何返回错误?
在回调函数中判断err参数,使用response.send(err)返回错误信息。
开发公众号可以获取微信的openid吗
可以
云函数如何进行模糊查询
调用REST API的模糊查询接口
云函数能引入第三方模块吗?如underscore
不可以,如要使用第三方模块,可考虑使用窗口服务。
我有一个云函数,客户端访问的时候查看一条数据库对象,如果不存在,则创建、返回,如果存在则直接返回。所有客户端的访问都是查看同一个对象,如何保证多个客户端同时访问的时候不会同时创建多个对象?
目前这个无法做到。
bql不支持 delete语句吗
目前bql只支持查询语句。
表设置了 ACL, 我想用 master key 或 用户的 token 去更新表,在云端用批量更新模块,如何传入master key 或 用户的 token ?
目前不支持
云函数怎么延迟执行一个操作
目前并无该项功能
云函数中不同的模块中经常出现相同代码 有没有办法把这些代码提取到公共区域来复用
云函数之间是可以相互调用的,具体查看云函数云对象章节。
怎么在云端调用 获取短信验证码、验证短信验证码
使用云函数进行http请求,请求REST API接口即可
云端如何自定义返回数据
定义好格式后以JSON形式返回
云函数MD5加密中文,结果怎么和PHP的不一样?
编码问题,https://cnodejs.org/topic/54ad4e40ce87bace2444cc49
BMOB云端数据库导入需手动导入CSV格式,如何做到自动抓取我本地CSV文件传入云端数据库
Bmob导入数据,只可以从web后台手动导入。如果你要自动从本地传入数据库的话,可以自己写代码(程序)实现,用Bmob提供的SDK或基于RestApi来插入数据到云端数据库中。
一个字段里没有值,查询后返回的内容也没有这个字段 后台使用的是MongoDB,是无模式的,只有显式给该字段赋值才会有内容返回。
写云函数的时候,只能通过objectId来查询符合条件的一行数据?我想用表中的其他字段当做查询条件怎么写?
可以使用条件查询,具体查看数据库对象中的查询多条数据小节。
用skip和limit来实现分页查询的话,如果表里的数据更新的很快的话,会不会查询出重复的数据?
会出现重复数据,因此,一般您在查询时可以加上限制,比如,查询第一页时的时间为A,那您可以约束查询创建时间在A之前的数据,在那之后的数据不查询,这样就不会有重复了。
云函数中where条件怎么表示!=?
您好,可以参考REST API文档中的查询数据中的条件查询,大概的形式为"type":{"$ne":"delete"}
如何更新1000条以上的记录
可以采用分页,先取1000条数据进行更新,再取1000条之后的数据接着更新
请问云函数请求HTTP时如何获取cookies和带cookies访问?
将var http = modules.oHttp; 改成var http = modules.oHttp.defaults({jar: true}); 即可使用全局cookie,后面的链接就不需要手动输入cookie了。
JavaScript能调用云函数吗(xx平台能调用云函数)
只要支持https请求就可以通过REST API来调用云函数,部分sdk直接封装了调用云函数的接口,具体可以查看云函数文档。
云函数数据库可以返回多少条记录?
一次最多只能返回1000次数据,如果要获取的数据大于整个数目,必须要分多次查询
云函数只能添加方法吗 我想在云函数中添加一个功能模块,但是发现云函数中的每个文件都是独立的,而且只能是方法,我想问一下能不能实现。
完全可以在方法内声明方法或者类的,这个不影响,而且可以通过间接调用的方式调用其他云函数的执行。
云函数执行console.log无输出
云函数上不支持console.log,只能使用response.end()输出。
云端怎么实现 require第三方模块? 云函数无法加载非官方模块,如需使用第三方模块,请考虑使用独立容器服务。
如何更新数据表中Date的数据
var userData = dataObject.results[0];
var checkDate = userData.checkDate.iso;
var lastDate = new Date(checkDate.toString());
var nowDate = new Date();
db.setHeader({"x-bmob-session-token":request.body.sessionToken.toString()});
userData.checkDate.iso=nowDate;
db.updateUserByObjectId({"objectId":request.body.objectId.toString() ,data: {"checkDate":userData.checkDate,"diamond":parseInt(userData.diamond)+10}},function(err,data)
{
})
containedIn在云函数里面是什么指令
对应为 REST API开发文档 查询小节里面的 $in 查询,你可以参考REST API文档,在where条件中使用就可以了。
如何在云函数中计算两个时间的时间差
var lastDate;//一定要是Date哦
var nowDate = new Date(data);
Date.parse(nowDate) - Date.parse(lastDate)
//注意:单位是毫秒级的哦
批量操作对象中 "path": "/1/classes/GameScore" ,其中的 "/1/class/ "是什么来的?怎么确定下来的?
/1/classse/ 是系统规定的路径,其中1是系统内部的版本号,classes表示接下来要操作的是数据表。
云函数能不能实现函数递归调用
可以,但要注意不能过于复杂,5s内无回调会提示超时。
我想用云函数修改user表中的数组,要如何设置?如何先获取表中的数组呢?获取了之后又要如何用arr.addUnique更新?求示例。
要修改User表中的数据需要注意: 1. 要么你有登录用户的sessionToken信息(也就是权限),这样可以修改用户信息; 2. 要么你用masterKey(也就是超级权限)来修改用户信息。
获取表中的信息非常简单,你直接Get就可以了,获取之后,你直接用类似如下的方法解决:
var arr = modules.oArray;
arr.addUnique({
"table":"_User",
"objectId":"j4w2DDDT", //这个对应是这个用户的objectId
"data":{"skills":{"__op":"AddUnique","objects":["flying","kungfu"]}}
},function(err,data){
//回调函数
});
云函数比较复杂的时候,很难找出根本原因 1. 能否支持加入日志,通过查看日志来debug? 2. 能否有类似IDE的断点,或者是报错信息更明确一点在哪里出错?
可以借助Bmob官方GitHub提供的云函数本地化调试工具来调试: https://github.com/bmob
对于设置了ACL为用户只读的数据,如何在云函数里将其全部读出?
使用masterKey 云函数设置masterkey的方法:
function onRequest(request, response, modules) {
var db = modules.oData;
db.setHeader({"X-Bmob-Master-Key":"这里填写Master Key信息"});
db.updateUserByObjectId({"objectId":"这里是需要更新的用户ObjectId信息" ,data:{"username":"123"}},function(err,data){
response.end("更新成功");
});
}
如果把代码放在云端,本地JS调用时,是否需要输入Application ID、REST API Key才能进行调用呢?
只需要在初始化js sdk的时候传人Application ID、REST API Key就行了,在js调用云函数的时候不需要传入
云函数里如何获取当前时间
云函数是运行在nodejs的环境中,所以js的函数能用在云函数上。 获取时间: var now = new Date();
调用云函数,能否获取调用者的真实IP,想用IP来做排行榜的地理位置统计
云函数打印headers
function onRequest(request, response, modules) {
response.send(request.headers);
}
结果:
Response Body
{
"code": 200,
"msg":
{
"x-real-ip": "114.114.114.114",
"x-forwarded-for": "114.114.114.114",
"host": "cloud.bmobapp.com",
"x-nginx-proxy": "true",
"connection": "close",
"accept": "/",
"a": "",
"content-length": "7",
"content-type": "application/x-www-form-urlencoded"
}
}
x-real-ip就是用户的真实ip的
请问怎么查询用户当前排名 比如:我有个GameScore 表 字段有:username,score 现在排行榜里面数据有5000多条,我知道某个用户objectId,如果快速找出排名位置呢?
解决方案: 根据order排名,把所有排名按次序放到一个数组中,然后根据objectId查找到某个用户名,用户名在这个数组中的位置即是他的排名。 RestAPI查询条件如下: 第一步:先查询到某个用户的用户名:
curl -X GET \
-H "X-Bmob-Application-Id: Your Application ID" \
-H "X-Bmob-REST-API-Key: Your REST API Key" \
-G \
--data-urlencode 'keys=username' \
https://你的API域名/1/users/某个用户的objectId
第二步:score降序获取前1000名的用户的用户名:
curl -X GET \
-H "X-Bmob-Application-Id: Your Application ID" \
-H "X-Bmob-REST-API-Key: Your REST API Key" \
-G \
--data-urlencode 'keys=username&order=-score&count=true&limit=1000&skip=0' \
https://你的API域名/1/classes/GameScore
返回前1000名的用户名,判断前一个查询的用户名是否在这个数组的哪个位置,如果没有找到,继续第二步, skip设为1000,直到找到为止。
优化方案: GameScore应该添加Pointer类型指向某个用户,然后在GameScore添加一个排名的列,更新score的时候更新排名,这样就可以直接根据用户的objectId一条查询就出来了。
本地iOS工程怎么调用云函数 云函数iOS开发文档
短信服务常见问题¶
购买方法及发票问题 登录开发者后台-->点击某个应用-->短信-->短信信息-->充值 里面进行自由购买。 需要发票报销的可以联系客服开具发票。
为什么有时候收不到短信 请检查你是否短时间内给同一个手机号码发送了多次短信,短信发送限制规则是1/分钟,5/小时,10/天。即对于一个应用来说,一天给同一手机号发送短信不能超过10条,一小时给同一手机号发送短信不能超过5条,一分钟给同一手机号发送短信不能超过1条。 还有一种情况是回复过TD退订的会被运营商列为黑名单,该通道不回再给该号码发送任何短信信息。如需要接收信息,需要在官网上联系客服QQ解封。
短信服务的签名可以换成我们自己定义的吗 短信服务支持自定义签名,由于运营商的规则变更,目前需要企业资质,并且需要一定使用量的客户才行,否则哪怕申请到了短信模板,也无法稳定收到短信。
提交短信验证码模板时需注意什么 1.模板中不能有【】和 [] ,否则审核不通过。 2.如果你提交的短信模板无法发送,则有可能包含一些敏感监控词,具体可去Github下载 短信关键字监控参考文档 来查看提交内容是否合法。 3.一天一个应用给同一手机号发送的短信不能超过10条,否则会报10010错误,其他错误码可查看 错误码 。
当使用不是Bmob的短信功能时,如何通过短信找回密码? 可以结合云端代码来解决。用其他短信服务验证验证码成功之后,就用 云端代码+master key 的方式,修改_User表的密码记录。
iOS¶
iOS 新安装的短信SDK 和之前安装的BmobSDK有冲突 短信SDK是在不需要使用BmobSDK时才使用的,BmobSDK里本身包含的短信SDK的所有内容,所以你将短信SDK移除就可以了
手机验证码注册不成功 验证码注册只需在注册时输入验证码即可,不需要先调用验证接口。verifySMSCodeInBackgroundWithPhoneNumber方法是用于注册后的验证功能。
注册时需要短信验证, 改怎么实现 注册时让用户填写手机号码,再进行验证即可,有手机注册验证接口
推送服务常见问题¶
推送服务采用的协议是什么
Websocket
会不会限制推送消息的数量
没有限制! 推送的用户数量没有限制,每天推送的消息条数也没有限制,所有都没有限制。
服务器能支撑的长连接有多大
Bmob的推送服务器是耗内存型的,保持1个长连接占用<10KB的内存,64GB的内存能够支撑600万用户的长连接。
Android推送收不到消息
1.手机是否连入网络 2.包名(应用包名,看配置文件)是否正确填写在web后台中
如果还是不能接收到推送,请检查:
3.手机是否有bmob的推送后台在运行 4.后台的Installation表有没有该手机对应的设备信息
iOS推送接收不到消息
iOS的推送都是用apns。你确认是否操作了几点: 1.检查推送的代码是否写错; 2.真机操作; 3.Bmob后台上传了未加密的p12证书; 4.Bmob数据后台的Installation表是否可以看到对应数据。 5.push token是否保存到服务器了
可以推送富文本到客户端吗
不直接支持文件的推送,但可以通过推送 url 来实现。 即先推送文件下载 url,到客户端触发逻辑来通过 url 下载文件。
iOS在服务端如何推送有声音和Badge提示
需要开发者自己定义JSON格式,格式如下:
{
"alert" : "You got your emails.",
"badge" : 9,
"sound" : "bingbong.aiff"
}
Android¶
手机中安装两个包含bmob push sdk的app,那么这时另一个包含bmobpush sdk的app会报错。
解决方法: 删除AndroidManifest.xml中自定义的推送权限声明即可,多个App可正常使用推送功能。
消息推送后点击消息进入不同的fragment页面
这个是需要自己去定义的,在点击进入时应该有一个地方可以控制页面的行为的,具体的谷歌百度会有很多资料
用PushManager.pushMessage(text)推送的消息能设置过期时间吗?默认的过期时间是多久?
暂时没有该功能。
消息推送里要设置的包名是指什么包
消息推送里要设置的包名是你应用的包名(Androidmanifest文件中的package)
iOS¶
按照设制好了IOS推送,推送后显示状态为"发送至APNS",但前面写着"推送0条",此时,手机也未接收到信息,是为什么?
1.看看Installation表是否有设备信息; 2.Bmob后台中是否把推送证书添加上去(不能加密); 3.你先尝试推送给所有的真实手机。
如何用 BmobPush发送原始apns报文?
要发送原始信息的可以使用-(void)setData:(NSDictionary *)data;方法
在installation 表中创立新的列无法添加进去数据
BmobInstallation *currentIntallation = [BmobInstallation currentInstallation];
[currentIntallation setObject:@"123" forKey:@"classes"];
[currentIntallation saveInBackground];
确实是无法直接这么加的,建议使用channel来实现业务需求
列的默认值问题¶
为了减少默认值方面的疑惑,现特把默认值的例子说明一下:
| 类型 | 输入的例子 | 说明 |
|---|---|---|
| String | jeff | 任意的字符串,如果默认值栏不输入任何值,则默认为空字符串 |
| Number | 23 | 数字 |
| Boolean | true或者false | |
| Date | CURRENT_TIME或者2006-01-02 15:04:05 | 值为CURRENT_TIME表示插入的是当前时间,其它时间值的格式为"2006-01-02 15:04:05" |
| File | {"__type":"File","filename":"新建文本文档.txt","url":"文件上传后得到的url"} | 用户需要修改的部分:其中"filename"为原来的文件名,url为上传文件后得到的url |
| GeoPoint | 23.23422,12.23532 | 23.23422为latitude,12.23532为longitude |
| Array | "tom","jeff" | |
| Object | {"name":"jeff"} | |
| Pointer | {"__type":"Pointer","className":"_User","objectId":"MqgrAAAL"} | 用户需要修改的部分:"className"为指向的class,"objectId"为指向的class对应的记录Id |
| Relation | {"__op": "AddRelation","objects": [{"__type": "Pointer","className": "_User","objectId":"MqgrAAAL"},{"__type": "Pointer","className": "_User", "objectId": "MTzXDDDG"}]} | 参考Pointer类型 |
平台性能与选型指标常见问题¶
基于2026年4月官方公开文档与常见问题口径,整理这份可直接用于压测/选型/成本核算的指标清单,覆盖核心限制与隐藏阈值,帮你避开踩坑点。
一、核心并发与吞吐量(承载能力)¶
| 指标 | 结果 | 隐藏阈值 |
|---|---|---|
| 单应用读并发 | 10w+ QPS | 稳定承载区建议≤8w,超阈值触发限流,需购更高配置 |
| 单应用写并发 | 5w+ QPS | 写并发天然低于读并发,高频写场景建议预做批量/原子操作 |
| 日请求量上限 | 定制版上限可以做到分布式无限增加负载能力(历史峰值50亿/日,日均30亿,2026年单应用10亿/日) | 建议按单应用10亿/日做容量规划,如需更高可联系客服 |
| 限流/熔断策略 | 高频接口超限直接返回错误 | 无公开详细阈值,建议自行做客户端重试+降级兜底 |
单应用读并发是多少 一个APP支持10w+读并发。稳定承载区建议≤8w QPS,超阈值可能触发限流,如需更高配置可联系客服。
单应用写并发是多少 一个APP支持5w+写并发。写并发天然低于读并发,高频写场景建议使用批量操作或原子计数器来优化。
平台有日请求量上限吗 定制版上限可以做到分布式无限增加负载能力。平台历史峰值达50亿/日,日均30亿,2026年单应用可达10亿/日。建议按单应用10亿/日做容量规划,如需更高可联系客服。
接口有限流或熔断策略吗 高频接口超限会直接返回错误。建议开发者自行实现客户端重试和降级兜底策略,避免因限流导致服务不可用。
二、数据库关键指标(性能与限制)¶
| 指标 | 结果 | 隐藏阈值 |
|---|---|---|
| 查询单条最大返回 | 1000条(默认100条) | 超1000条建议分页,否则易触发超时与流量超限 |
| 单表最大记录数 | 5 亿的开发者单表只id 查询 | 单表超百万级建议分表/分区,避免全表扫描性能骤降 |
| String字段最大长度 | 4M | 超1M建议拆分存储,避免传输/写入耗时过长 |
| 批量操作上限 | 单次50条 | 超50条建议分批次执行,避免单次请求过大被限流 |
| 聚合查询支持 | count/sum/average/min/max | 不支持复杂分组/多表联查,复杂统计建议在云函数落地 |
| 索引规则 | 主键/ACL/createdAt/updatedAt默认索引,其他需手动创建 | 高频查询字段必须建索引,否则全表扫描严重拖慢响应 |
| 事务支持 | 不支持原生事务 | 多表原子操作需用批量接口+乐观锁(_version字段)实现 |
查询一次最多返回多少条数据 单次查询最大返回1000条,默认返回100条。超过1000条建议使用分页查询,否则容易触发超时与流量超限。
单表最大能存多少条记录 2025 年,其中要给开发者单表达到 5 亿还流程,应用只通过主键 id 查询。建议单表超过百万级时做分表或分区处理,避免全表扫描导致性能骤降。
String字段最大支持多长 String字段最大支持4M。但超过1M建议拆分存储,避免传输和写入耗时过长。
批量操作一次最多多少条 单次批量操作上限为50条。超过50条建议分批次执行,避免单次请求过大被限流。
支持哪些聚合查询 支持count、sum、average、min、max等基础聚合操作。不支持复杂分组和多表联查,复杂的统计需求建议在云函数中实现。
数据库支持事务吗 Bmob数据库不支持原生事务。如需多表原子操作,可使用批量接口结合乐观锁(_version字段)来实现。
读写延迟大概是多少 在索引合理、数据量适中的情况下,单条读写延迟通常在10-50ms范围内。95分位延迟受网络和查询复杂度影响较大。
支持Redis或缓存吗 Bmob目前不提供独立的Redis或缓存服务。如需缓存能力,可在客户端实现本地缓存,或通过云函数配合第三方缓存服务实现。
三、云函数(Serverless)资源限制¶
通用限制¶
| 指标 | 结果 | 隐藏阈值 |
|---|---|---|
| 执行超时时间 | 30ms(需主动调用response.send返回,否则视为超时) | 高频超时会被自动封停,需联系客服解封 |
| 持久化项限制 | 普通用户50个;单项≤10MB;总大小≤10MB;每次周期读写各1次 | 超额度需联系客服提升,否则写入失败 |
| 请求体大小 | 0.2MB | 建议≤10MB,超大会触发网关限流,建议拆分传输 |
云函数冷启动时间大概是多少 云函数(Cloud Functions)实现「Zero Ops」。代码自动弹性伸缩,毫秒级冷启动,在离用户最近的边缘端运行逻辑。
云函数执行超时时间是多久 单个云函数执行时间控制在30s以内。
云函数支持哪些语言 目前支持Node.js和Java两种语言。Node.js适合轻量级逻辑处理和快速开发,Java适合对性能有更高要求的场景。
云函数有内存和CPU限制吗 Java云函数的内存配额为64KB/应用。内存空间非持久化,重启可能重置,重要数据需结合数据库持久化。普通用户的持久化项限制为50个,单项≤10MB,总大小≤10MB。
云函数的日志和调试方便吗 后台支持按时间、级别、关键字检索云函数日志,单应用最大10M日志空间(循环写入)。高级用户可开通实时日志,需联系客服申请。建议开发阶段充分测试,上线后结合日志监控排查问题。
四、稳定性与高可用¶
| 指标 | 结果 |
|---|---|
| SLA承诺 | 基于k8s容器+7层负载均衡架构,实际可用性较高 |
| 多可用区/异地容灾 | 北京/杭州/香港BGP机房,7层负载均衡,机房故障自动切换,无需手动干预 |
| 容灾备份 | 三级容灾备份(定期/实时),自动备份只保存最近7条;专业版及以上每天备份一次;开发版数据大于200M不会自动备份;备份仅备数据不备表结构 |
| 故障恢复 | k8s容器自动重启和调度,单个容器故障秒级恢复,机房级故障分钟级切换 |
平台的SLA承诺是多少 平台基于k8s容器虚拟化和7层负载均衡架构,实际可用性较高。自2013年运营至今,积累了丰富的运维经验。
支持多可用区和异地容灾吗 支持。Bmob在北京、杭州、香港部署了BGP机房,采用7层负载均衡技术,机房故障可自动切换,无需手动干预。
故障恢复速度如何 基于k8s容器架构,单个容器故障可秒级自动重启恢复;机房级故障可分钟级自动切换到其他可用节点。
备份还原机制是怎样的 备份还原是对应用云端数据库中的数据进行实时/定时在线备份,持续保护业务数据。自动数据备份只保存最近7条数据。注意事项: 1. 数据备份只提供数据的备份,不提供表结构备份(如删除了某表,则无法对该表进行恢复)。 2. 专业版套餐以上(包含专业版)的应用,每天备份一次。 3. 开发版套餐的应用,如果应用的数据大于200M,则不会自动备份。
五、安全能力¶
| 指标 | 结果 | 隐藏阈值 |
|---|---|---|
| 请求鉴权 | Application Key + REST API Key + Master Key | 未开启ACL时默认所有用户可读写,需手动配置权限 |
| 权限体系 | ACL/角色/IP白名单/签名验证 | 生产环境务必配置ACL,避免数据泄露 |
| 防刷/防爬虫 | 接口频率限制 | 无公开详细阈值,建议自行实现业务层防刷逻辑 |
| 数据传输加密 | requestId + timestamp + Application Key一次性对称加密 | 可抵御Fiddler/Wireshark抓包,敏感数据建议额外加密 |
| 数据存储加密 | 应用间Docker隔离 + 三级容灾备份 | 敏感数据建议客户端加密后存储 |
| 防SQL注入/XSS | NoSQL数据库天然防SQL注入;XSS需客户端自行防护 | 使用REST API时注意参数校验,避免注入攻击 |
平台的权限体系是怎样的 Bmob提供应用层次、表层次、ACL、角色、IP白名单、签名验证等多种安全控制方式。未开启ACL时默认所有用户可读写,生产环境务必手动配置权限。详细说明请查看数据安全文档。
有防刷和防爬虫机制吗 平台提供接口频率限制来防止恶意刷接口。无公开详细阈值,建议开发者在业务层自行实现防刷逻辑(如验证码、IP限频等)。
数据传输和存储是加密的吗 数据传输采用requestId + timestamp + Application Key的一次性对称加密算法,可抵御Fiddler、Wireshark等抓包工具。数据存储方面,应用间采用Docker隔离,并做三级容灾备份。敏感数据建议在客户端额外加密后存储。
如何防止SQL注入和XSS攻击 Bmob使用NoSQL数据库,天然不存在SQL注入风险。XSS攻击需在客户端自行做好输入校验和输出转义。使用REST API时注意参数校验,避免注入攻击。
六、文件存储与CDN¶
| 指标 | 结果 | 隐藏阈值 |
|---|---|---|
| 单文件上传上限 | 控制台上传≤50MB;SDK上传无明确上限(建议≤50MB) | 超50MB建议分片上传,避免单次上传失败 |
| 上传下载速度 | CDN加速,国内节点覆盖 | 海外加速需单独购买,详见官网定价 |
| 免费额度 | 每账户免费20GB存储 + 20GB流量/月 | 超出后计费详见官网定价 |
| CDN加速 | 支持全球节点(国内/香港/东南亚) | 海外加速需单独购买,否则海外访问速度一般 |
| 文件处理能力 | 基础存储+CDN加速,无自动缩略图/格式转换 | 需自行在客户端处理图片,云函数端可调用第三方图片处理服务 |
文件上传下载速度如何 国内节点通过CDN加速,上传下载速度良好。海外加速需单独购买,详见官网定价。更大文件(10G+)建议使用FTP上传。
文件存储和流量有免费额度吗 每账户免费提供20GB存储空间和20GB流量/月。超出部分计费详见官网定价。
支持图片处理、缩略图和格式转换吗 Bmob文件存储提供基础存储和CDN加速,暂不支持自动缩略图和格式转换。需自行在客户端处理图片,或在云函数中调用第三方图片处理服务实现。
CDN支持哪些节点 支持国内、香港、东南亚等全球节点。海外加速需单独购买,详见官网定价。
七、监控与运维¶
| 指标 | 结果 | 隐藏阈值 |
|---|---|---|
| 实时请求监控 | 后台可查看API请求统计 | 日统计一次,凌晨3点更新,无实时统计 |
| 错误率监控 | 后台可查看错误日志 | 需手动分析日志,无自动错误率统计 |
| 慢查询/慢函数 | 未提供专门的慢查询分析 | 建议在云函数中自行记录耗时操作 |
| 告警机制 | 邮件、官网通知、公众号推送消息 | 如需更多告警渠道,可通过云函数+第三方服务(如企业微信/钉钉)扩展 |
| 日志检索 | 后台可按时间/级别/关键字检索 | 单应用最大10M日志空间(循环写入),高级用户可开通实时日志 |
| API统计 | 日统计一次,凌晨3点更新 | 无实时统计,需自行通过云函数+日志实现实时监控 |
有实时请求监控吗 后台可查看API请求统计,但统计不是实时的,每天统计一次,凌晨3点更新。如需实时监控,建议通过云函数结合日志自行实现。
有慢查询或慢函数分析吗 平台暂未提供专门的慢查询分析工具。建议在云函数中自行记录耗时操作,通过日志分析定位性能瓶颈。
有告警机制吗 Bmob提供邮件、官网通知、公众号推送消息等官方告警渠道。如需更多告警渠道(如企业微信、钉钉等),可通过云函数+第三方服务扩展实现。
日志检索能力如何 后台支持按时间、级别、关键字检索云函数日志。单应用最大10M日志空间(循环写入)。高级用户可联系客服开通实时日志功能。
八、成本与计费¶
| 计费项 | 结果 | 隐藏阈值 |
|---|---|---|
| API调用计费 | 按请求次数计费 | 具体价格请查看官网定价页面 |
| 数据库读写/存储空间 | 按读写次数和存储量计费 | String字段超1M会额外消耗流量费用 |
| 云函数执行时长 | 按调用次数计费 | 高频超时可能被封停,产生额外费用 |
| 流量/下载带宽 | 每账户免费20GB/月,超出部分详见官网定价 | CDN海外加速需额外购买 |
| 隐藏成本 | 数据导出、备份需自行实现 | 外网访问产生的流量费用需注意 |
API调用怎么计费 API调用按请求次数计费,具体价格请查看官网定价。注意API请求数每天统计一次,凌晨3点更新。
数据库存储怎么计费 数据库按读写次数和存储量计费,具体价格请查看官网定价。注意String字段超过1M会额外消耗流量费用,建议大文本拆分存储。
云函数怎么计费 云函数按调用次数计费,具体价格请查看官网定价。注意高频超时可能被封停并产生额外费用,建议控制单个云函数执行时间在30s以内。
有哪些隐藏成本需要注意 数据导出和备份需自行实现,可能产生额外开发成本。外网访问产生的流量费用需注意。CDN海外加速需额外购买,详见官网定价。
九、生态与易用性¶
| 指标 | 结果 | 隐藏阈值 |
|---|---|---|
| SDK完善度 | Android/iOS/Unity/Cocos/微信小程序/Flutter/JS/C#/PHP/Java/Python/GO | 跨平台数据互通,SDK与REST API完全打通 |
| 文档与示例 | 提供官方文档、视频教程和示例代码 | 建议使用最新版SDK,旧版可能存在兼容性问题 |
| 社区与支持 | 工单系统+客服支持 | 技术支持响应速度视问题复杂度而定 |
| 第三方集成 | 支付、推送、短信等需自行对接 | 可通过云函数调用第三方API实现集成 |
SDK支持哪些平台 Bmob SDK支持Android、iOS、鸿蒙(Harmony)、Cocos Creator、Unity、Flutter、JS/小程序/快应用、C#、PHP、Java、Python、GO等主流平台。所有SDK基于REST API开发,数据完全打通。
文档和示例完善吗 Bmob提供官方文档、视频教程和示例代码。建议使用最新版SDK,旧版SDK(如3.4.7)可能存在兼容性问题。官方视频教程地址:视频教程
客服和技术支持响应速度如何 可通过控制台工单系统或联系客服获取技术支持。响应速度视问题复杂度而定,一般问题可在工作日内得到回复。
支持第三方集成吗(支付、推送、短信等) Bmob本身不直接提供支付、推送、短信等第三方服务集成,但可通过云函数调用第三方API来实现。例如发送短信可调用阿里云/腾讯云短信API,支付可对接微信/支付宝支付等。