目前,我使用Javascript Parse.Object.extend查询结果,并将这些结果模板化为带有underscoreJS的列表.
以下是查询Parse对象并将对象添加到Underscore模板的代码.
var Assignment = Parse.Object.extend("Assignments");
var query = new Parse.Query(Assignment);
query.descending('updatedAt');
query.find({
success: function(results) {
console.log("Success");
var tableTemplate = $("#list-template").html();
$("#assignmentdisplay").html(_.template(tableTemplate,{results:results}));
},
error: function(error) {
alert("Error: " + error.code + " " + error.message);
}
});
Run Code Online (Sandbox Code Playgroud)
这是Underscore模板.
<script type="text/html" id='list-template'>
<% _.each(results,function(result){ %>
<li id="list-group-item">
<h4 class="list-group-item-heading"><%= result.get("Title") %></h4>
<p class="list-group-item-text"><%= result.get("Content") %></p>
<p class="list-group-item-text"><%= result.get("Categories") %></p>
</li>
<% }) %>
</script>
Run Code Online (Sandbox Code Playgroud)
但是,我不明白如何在Parse和Underscore中对结果进行分页.
我已经尝试了骨干分页器,但我对Backbone并不是很好,我只是不明白如何将它与Parse查询结合起来.
如果我必须使用另一个模板解决方案,或骨干分页器之外的其他分页解决方案,它也没关系.任何事都会有所帮助,我对这个分页很感兴趣.
编辑:
Parse.com有skip()和limit(),不知怎的,据说这很有用,但我不知道如何实现它.
javascript pagination backbone.js underscore.js parse-platform
这个问题是我在解析帮助论坛上发布的错误报告的镜像
现在,我知道解析网站上的那个不是一个问题,而是一个报告,我不想离开这里只是报告的一面镜子,但只是检查我的担忧是否有充分根据,人们可能有更多和我一起经历.
问题是,解析似乎没有以正确的方式生成HMAC签名.
现在,我的担忧是否有充分理由?我是否在签名生成的任何部分误解了OAuth RFC?Parse的员工/用户怎么可能没有注意到这么大的错误?
请知道,这个问题可以产生广泛的讨论,但由于这个问题的重要性(不仅对我而言,对所有解析用户而言)都留给时间让某人知情留下有效回复.
编辑:
我正在挖掘Parse iOS SDK以找出实际发生这种情况的原因.经过一些研究和他们的静态库的一些逆向工程后,我发现他们正在使用一个名为OAuthCore的修改过的文件(可能只修改了用'PF'加上前缀的方法名称).在发现这个之后,我通过查看他们的SDK的旧开源版本(发现谷歌搜索修改的库名称)得到了确认.现在,该库完成了它的工作并按预期工作,足够坚持RFC.问题是,显然,OAuth不会覆盖整个HTTP请求,而只是其中的一部分.我期待的是,恕我直言,当你提出更新字段的请求(或进行购买?登录?发送敏感数据?)时,"脏"字段应作为请求的参数发送,以便它们将包含在通过OAuth协议完成的签名/验证过程中.而是更新请求(特别是通过调用指向https://api.parse.com/2/update的POST请求)将POST请求的主体设置为表示实际更新的json字符串.说实话,在所有这一切之前,这一点很清楚,因为通过查看请求,我应该意识到json文本是作为请求的原始主体而不是x-www-form-urlencoded主体发送的(因此具有查询参数urlencoded和&-concatenated在请求的正文中).
虽然现在这是"正确的"行为,但我觉得这不应该像成千上万人使用的生产环境中那样.我现在要做的是尝试在不破坏功能的情况下修补它,如果我设法做到这一点,我将分享补丁.
仍希望直接得到Parse的回复.
编辑2:Parse已将我的问题作为一个无问题而是一个错误报告关闭.没有评论其实施意味着的主要安全漏洞.
下面是报告错误的副本
我正在使用Parse iOS SDK,我发现了一个严重威胁使用解析作为后端开发的应用程序安全性的主要错误.
现在,我很抱歉,如果我没有使用错误问题报告工具,但我没有自己的Facebook帐户,我不愿意.
前提:Parse API似乎符合OAuth协议1.0a (RFC 5849).涉及此错误的RFC的相关部分位于第18页,签名.
在oauth中,根据上面提到的RFC,每个请求都应该有一个认证头,如下所示:
Run Code Online (Sandbox Code Playgroud)OAuth realm="Example", oauth_consumer_key="0685bd9184jfhq22", oauth_token="ad180jjd733klru7", oauth_signature_method="HMAC-SHA1", oauth_signature="wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D", oauth_timestamp="137131200", oauth_nonce="4572616e48616d6d65724c61686176", oauth_version="1.0"这将不仅确保请求被授权,而且甚至确保请求完整性,因为HMAC签名将强制执行此操作.事实上,签名应该通过使用由请求参数组成的规范化字符串来计算,并使用连接到令牌共享密钥的客户端共享进行签名(请参阅RFC第25页第3.4.2节).通过这种方式,恶意用户在到达服务器之前不应该能够修改请求.事实上,服务器应检查签名是否与整个请求匹配,否则拒绝签名.
可悲的是,Parse似乎并不完全符合上述要求.通过使用简单的代理,我能够完全修改请求,从更改执行请求的用户ID,更改请求中的参数值,添加一个字段和一个在所有请求中不包含的值.
现在很容易想象所有这些都可能导致的缺点.特别是我想移动开发人员在他们的应用程序中启用应用程序内购买,依赖于解析对他们来说足够安全,他们的用户将无法"欺骗",从而失去收入并使他们所做的努力无效为他们的应用程序
现在,虽然我能够在其他SDK上测试它,但我很确定同样的bug也可以在那里重现,或者更糟糕的是问题是服务器根本没有检查签名.
等待Parse员工对此错误的回应.
此致,安东尼奥
在调用下面的代码几次(5-10次)后,SaveCallback的done()方法不会触发,整个应用程序似乎卡住了.看起来这个请求会破坏请求队列,所有进一步的查询也不会触发它们的回调.回调和日志中没有错误."在节省之前" - 显示在日志中,而"已保存" - 则没有.
我是否需要更改解析定价合同,或以某种方式更改我的代码?
Log.d("MESSAGE OBJECT", " BEFORE SAVING");
messageParseObject.saveInBackground(new SaveCallback() {
@Override
public void done(final ParseException e) {
Log.d("MESSAGE OBJECT", " SAVED");
if (e != null){
completitionCallback.error(e);
return;
}
chatObject.put(ModelConstants.LAST_MESSAGE_KEY, messageParseObject);
chatObject.getRelation(ModelConstants.MESSAGES_KEY).add(messageParseObject);
chatObject.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
Log.d("CHAT OBJECT", " SAVED");
if (e == null)
completitionCallback.success();
else
completitionCallback.error(e);
}
});
}
});
Run Code Online (Sandbox Code Playgroud) 在使用Parse实现推送时,我没有使用与Google Cloud Messaging相关的任何内容.我没有打开谷歌开发控制台并切换GCM消息,我也没有获得任何发件人ID,我没有注册设备来获取注册ID,但是Parse可以发送推送.我想知道Parse使用自己的套接字?在Parse Android源代码中,我无法捕捉到与此相关的任何内容.现在,所有Parse迁移服务都需要GCM注册ID,包括Parse自己的开源推送后端解决方案.有人可以提供有关此的详细信息吗?
android push-notification parse-platform google-cloud-messaging
我有一个取自Parse的对象,我想将其列保存到一个Dictionary或其他东西(如果它更好).
我想要这样的字典: ["name" : "Mike", "lastname" : "vorisis", "id" : "advsas"]
以下是我用来获取结果的代码:
func queryEvents() {
let query = PFQuery(className: "eventController")
query.limit = 1000
query.includeKey("idEvent")
query.includeKey("eventType")
query.includeKey("idEvent.idMagazi")
query.findObjectsInBackgroundWithBlock { (objects, error)-> Void in
if let objects = objects {
for object in objects {
var post = object["idEvent"] as? PFObject
var post2 = post!["idMagazi"]
print("retrieved related post: \(post2["name"]!)")
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我的Android项目目前需要某种身份验证(手机号码/ facebook/gmail ......我还没有决定),来自服务器数据库的频繁读/写操作(不是大量数据,也没有图像/视频),推送通知以及将来可能对存储的数据进行复杂查询.
我开始阅读有关Parse和Google云的内容(在Google中,特别是关于移动后端启动程序).
我似乎无法找到两者之间的比较.我已经读到两者都有相对简单的实现,但除了平台(我使用的是Android,所以两者都适用于我),我找不到一个地方说"Parse更擅长...和Google云更好......".
所以我的问题是:
google-app-engine android parse-platform google-cloud-endpoints kiicloud
只是想知道是否有一个免费的parse.com替代方案,允许人们在表中任意存储数据并动态创建数据库(例如在mysql中),就像parse.com一样.
我很想知道并使用它,然后花时间创建一个.
谢谢!
所以我正在开发beforeSave/afterSave/etc中的一些业务逻辑.使用Parse.com键入webhooks.作为一个Javacscript/Parse新手,我发现这个流程有点单调乏味,我想知道我是否正确接近它.
重复广告恶心.
我可以使用Rest Console/Postman之类的东西来设置我的JSON请求吗?我可以在本地检查更多语法,而不是每次更改任意代码时都必须运行Parse Deploy吗?是否有任何改进的调试我可以使用像XCode/etc?
谢谢.
我有一个安装了Parse和Facebook框架的应用程序.通过将文件拖到项目的"Frameworks"文件夹并选择"如果需要复制"来安装Parse,同时通过拖动而不选择复制选项来安装Facebook SDK.两者都显示在链接二进制列表下.问题似乎是两个SDK都包含了螺栓.我尝试使用Facebook,产生以下Link-O错误:
Undefined symbols for architecture x86_64:
"_BFTaskMultipleExceptionsException", referenced from:
___53+[PFObject(Private) deleteAllAsync:withSessionToken:]_block_invoke214 in Parse(PFObject.o)
___65+[PFObject(Private) _deepSaveAsync:withCurrentUser:sessionToken:]_block_invoke311 in Parse(PFObject.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)
我删除了Facebook的链接并尝试拖动Parse,但错误仍然存在.我也得到了警告
ld: warning: ignoring file /Users/milesper/Documents/FacebookSDK/Bolts.framework/Bolts, missing required architecture x86_64 in file /Users/milesper/Documents/FacebookSDK/Bolts.framework/Bolts (2 slices)
Run Code Online (Sandbox Code Playgroud)
即使我从Facebook SDK中删除了该文件.
我该如何清理项目并链接到Parse版本的螺栓?还有别的我应该做的吗?
我正在编写一个小型Web应用程序,因为我正在学习使用Parse.com的功能.
由于application_id和javascript_key都是公共的(如文档中所述),这意味着任何人都可以自由运行代码,如下面的代码段所示:
function sendRequest(){
var query = new Parse.Query(Parse.User);
query.find({
success: function(results) {
console.log("Request sucessful");
},
error: function(error) {
console.log("Request error: " + error.code + " " + error.message);
}
});
}
setInterval(sendRequest, (1000 / hitsPerSecond));
Run Code Online (Sandbox Code Playgroud)
我认为它可以很容易地导致"DOS"攻击 - 任何愿意将这个应用程序关闭的人只需要恢复公钥并发送大量请求.
编辑帐户有一个请求/限制,免费计划从30开始,但使用这个简单的脚本可以使任何订阅计划饱和.
考虑到这是正确的 - 对此有什么好的做法吗?任何模式适用?
提前致谢,
parse-platform ×10
android ×4
ios ×2
javascript ×2
backbone.js ×1
cloud ×1
database ×1
dictionary ×1
facebook ×1
kiicloud ×1
mysql ×1
node.js ×1
oauth ×1
pagination ×1
save ×1
security ×1
swift ×1
xcode ×1