请问有没有 php 或者 ruby 可以用的, 类似 LeanCloud 的服务

2015-09-11 13:10:12 +08:00
 adkudao
LeanCloud 开发移动端确实是神器啊, 可是他们公司没有 php/ruby 工程师;

网上的第三方 SDK 很难保证稳定性;

请问国内有没有 php/ruby 能用的, 类似 LeanCloud 这样的 BaaS 服务?
3365 次点击
所在节点    问与答
20 条回复
qinix
2015-09-11 14:39:42 +08:00
直接用他们的 REST API 呗
cnpaas
2015-09-11 21:07:24 +08:00
试试 CNPaaS :
http://www.cnpaas.io/
adkudao
2015-09-11 23:04:46 +08:00
@qinix 没原生代码好用


@cnpaas 谢谢, 但这个应该还在测试阶段吧, 生死未卜, 我可不敢用他们的服务
hjiang
2015-09-21 15:55:09 +08:00
LeanCloud 的官方 PHP SDK 已经在开发了。
adkudao
2015-09-21 20:51:03 +08:00
@hjiang

非常期待, 我前几天自学 node.js 和 python 分别写了一套基于 LeanCloud 的系统,不是很顺手, 然后又自己用 REST API 写了一套 php 的系统
adkudao
2015-09-21 20:51:22 +08:00
@hjiang

提两点建议:

一. 能否添加对 SQL 语句 的支持?

在不考虑后台的情况下, LeanCloud 对于快速推出产品原型很有帮助, 但如果考虑同时生成后台的话,个人感觉 LeanCloud 并不是很方便;

举例 1: 在读取 test 这张表(Object)时, 我要用 '字段 1 > 字段 2' 这样的条件来筛选:
如果用 SQL 语句, 直接 'where 字段 1 > 字段 2'就可以了,
但如果用 LeanCloud 提供的接口, 很难完成这样的操作;


举例 2: 我要获取在 2015-06-29 当天发布的微博, 如果用官方提供的查询方法, 大概类似这样:
--data-urlencode 'where={"createdAt":{"$gte":{"__type":"Date","iso":"2015-06-29T00:00:00.000Z"},"$lt":{"__type":"Date","iso":"2015-06-30T00:00:00.000Z"}}}' \

如果用 SQL 语句, 只要这样就可以了:
'where time > 时间 1 and time < 时间 2'


而且这只是查询,如果再加上排序等其他条件的话, LeanCloud 现有的接口真的太复杂,太不方便了,如果可以简化的跟 SQL 语句一样的话, 绝对是功德无量, 造福大家的;

我个人建议可以参考常见的 Web 框架, 进行 CURD 操作, 比如读取列表可以这么写
$list = M('表名 /Object 名') -> where(SQL 条件) -> order(排序条件) -> limit(索引条件) -> select();

$list = M('Test') -> where('quota > finish and time > XX 时间') -> order('time desc, id asc') -> limit(20, 10) -> select();




二. 能否修改字段属性?
比如我在使用 REST API 的时候, 明明存储的字段是数字, 结果到控制台一看, 就变成了字符串, 在做条件查询时, 也必须按字符串来做查询约束,否则出错; 我想在控制台更改该字段的属性, 结果发现改不了, 只能删了以后再手工添加一个, 可这么一来, 数据就没了;
hjiang
2015-09-22 12:47:25 +08:00
@adkudao LeanCloud 本来用的就不是 SQL 数据库,所以是不能支持 SQL 的所有功能的,这并不是一个语法上支持的问题。但是我们支持一个类似的 DSL ,我们把它叫做 CQL : https://leancloud.cn/docs/cql_guide.html 可以看文档了解。

关于第二个问题,应该是你在传递 JSON 数据时使用的格式造成的,数字两边打上了引号就变成了字符串。对于已经有数据的表,我们不好支持修改字段类型,因为没有通用的处理办法。
adkudao
2015-09-23 02:37:38 +08:00
@hjiang

CQL 太好了, 粗略看了一下, 果然跟 SQL 语句差不多, 我下一个项目的技术选型就试试它, 非常希望可以成为你们的付费用户!

加油, 祝 LeanCloud 越来越简单易用, 接口越来越强大, 付费用户越来越多.
LeanCloudRRY
2015-10-09 11:47:54 +08:00
PHP SDK 已经发布并开源→ https://github.com/leancloud/php-sdk
adkudao
2015-10-09 21:10:11 +08:00
@LeanCloudRRY 太漂亮了! 鼎力支持! 只是, 说好的文档呢?
adkudao
2015-10-09 21:30:50 +08:00
@LeanCloudRRY

还有一个很重要的地方, CQL 语言是如何调用的呢? 我翻遍了 tests 文件夹, 貌似没有找到
CQL 语言对于快速查找遍历数据很有用, 怎能少得了它~
juvenn
2015-10-10 14:30:49 +08:00
@adkudao php-sdk 正在全力开发中,功能还在完善中。我们会尽快发布,敬请期待。
adkudao
2015-10-10 16:56:34 +08:00
@juvenn 无比期待 CQL 能够尽快集成,支持你们!
LeanCloudRRY
2015-11-09 13:48:06 +08:00
@adkudao 正式发布了哟,再 mark 一下,希望能够给我们提出意见和建议~
adkudao
2016-01-19 15:12:50 +08:00
@LeanCloudRRY 不好意思, 前段时间没上 V 站, 我现在看下, 晚点给你们意见
adkudao
2016-01-20 03:13:19 +08:00
@LeanCloudRRY @juvenn

我看了你们的 Github, 不知道你们希望是以技术驱动产品还是以市场驱动产品?

如果想以市场驱动的话, 我这里有个建议:

你们作为一款 BaaS 产品, 要扩大份额就要靠易入门和宣传;

要保住份额的话, 最重要的是稳定和速度;

易入门你们已经做的很好了,不过还可以更好, 比如我发现你们写文档时, 似乎优先去做你们的那些 LeanObject,LeanQuery 类;

但我觉得你们优先把重点放在 CQL 上效果会更好;


还是用我上面举的例子,我要获取在 2015-06-29 当天发布的微博,

如果用你们提供的文档, 我可能需要耐着性子去一个一个看你们声明的各种方法, 格式, 结构...
最后可能才能勉强拼出下面这段代码
--data-urlencode 'where={"createdAt":{"$gte":{"__type":"Date","iso":"2015-06-29T00:00:00.000Z"},"$lt":
{"__type":"Date","iso":"2015-06-30T00:00:00.000Z"}}}' \

作为一个想使用你们产品的新人, 恐怕很多人看了第一个方法后就直接放弃了,更别提还要组合;

一个是未必能弄懂怎么去组合这些查询方法, 二个是勉强组合出来的代码, 有很大可能性会出错, 运行不了, 然后, 就再也不会使用你们产品了, 你懂的..


但如果你们一开始大书特书你们的 CQL 查询方法, 告诉别人就像用 SQL 一样去使用就行了, 比如要实现我刚说的查询, 只要下面这行代码就够了:
'where time > 时间 1 and time < 时间 2'

那么我很难想出不用你们产品的理由;


----------------------------------------------------------------------

这就是我给你们的建议: 优先做 CQL, 加强 CQL, 完善 CQL:
1. 把学习成本降低到近乎为 0, 把易入门做到极致;
2. 让开发更简单, 节约用户大量的开发成本;

----------------------------------------------------------------------



我看你们文档里有提到使用 CQL 可能会导致性能的一些下降, 不过既然用了你们的产品, 想必不会对速度要求特别高, 而且, 程序员的时间, 比机器时间更宝贵, 不是吗?
adkudao
2016-01-20 03:23:38 +08:00
@hjiang @LeanCloudRRY @juvenn

对了, 除了刚才的建议, 正好问你们一件事,

你们的 JavaScript SDK 的 AV.File 接口 , 能否实现在安卓手机浏览器下的文件上传?

我们都知道安卓有不少版本, 都把 file input 给屏蔽了, 用普通的上传文件方法根本上传不了文件, 我一般都是用微信的上传接口上传的文件, 不知道你们的接口是否可以突破这个限制?

如果可以, 是否可以扩大一点, 比如能否在 AppCan, APICloud 这种 Hybrid 混合方式用使用? APICloud 他们也做了一个轻 BaaS 平台, 好像是可以上传文件的, 只要能连 HTTP, 就可以通过转码的方式上传;

希望你们有这个功能, 对于需要适配 Android 的移动网页开发者来说, 应该是个刚需;
adkudao
2016-02-01 04:17:00 +08:00
@hjiang @LeanCloudRRY @juvenn

PHP SDK 完全不能用, 直接用你们的代码, KEY 什么的都没问题, 一个实例都运行不了, PHP 版本 5.3, 5.4 都用过了
leeyeh
2016-02-02 17:24:53 +08:00
JavaScript SDK 支持包括微信 webview 在内的 Android 运行环境,具体方式请参考 https://leancloud.cn/docs/js_guide.html#文件。

Android 微信无法通过 file input 上传文件的问题我搜到的资料都比较旧了,不知道现在的支持情况如何。除了使用原生的 file input 控件我们还支持通过 base64 上传文件、保存一个现有存储在其他服务上的 URL 的文件对象。

对于 Hybird 应用,我们最新的测试版提供了 [React Native 的支持]( https://blog.leancloud.cn/3993/)。此外如果解决方案使用的是 Webview 来运行代码的话,那么理论上也是支持的。
juvenn
2016-02-02 17:26:06 +08:00
@adkudao 方便描述你在使用 php sdk 的具体问题吗?如错误栈等?如果以后遇到类似的问题,欢迎你在 github.com/leancloud/php-sdk 提交 issue 。同时我们也有用户论坛 forum.leancloud.cn ,正常情况我们都能在 1 天内跟进。

关于性能上的问题,我们的平台有较大的客户,对速度可用性等的要求都很高,是非常在乎性能的。 CQL 是我们对 key-value 数据库的一个扩展,提供了类 SQL 的接口,在效率和可表达性上做了权衡,但并不能完全与 SQL 兼容。

关于手机浏览器上传文件的问题,我会反馈给同事。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/219922

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX