Parse platform Parse.com:使用另一个查询的结果进行查询
我有一个帖子生命周期有限的应用程序。 每一个喜欢的人都会给这个职位增添活力 在我的表中,有一个字段initialDeletionDate和一个计数器,用于跟踪喜欢的数量。 在我的新闻提要中,我试图查询对象,但我只想得到仍然存在的对象 所以基本上,我想做的是获取所有对象,其中:Parse platform Parse.com:使用另一个查询的结果进行查询,parse-platform,pfquery,Parse Platform,Pfquery,我有一个帖子生命周期有限的应用程序。 每一个喜欢的人都会给这个职位增添活力 在我的表中,有一个字段initialDeletionDate和一个计数器,用于跟踪喜欢的数量。 在我的新闻提要中,我试图查询对象,但我只想得到仍然存在的对象 所以基本上,我想做的是获取所有对象,其中: initialDeletionDate + counter*time < [NSDate date] //time = 1200 sec 我该怎么做呢?我建议在类中添加第三个字段,该字段具有最终删除日期。您可以更新
initialDeletionDate + counter*time < [NSDate date]
//time = 1200 sec
我该怎么做呢?我建议在类中添加第三个字段,该字段具有最终删除日期。您可以更新客户端代码或创建一个云方法,将此日期的值设置为
initialDeletionDate+(计数器*1200)
然后,当您查询时,您只需询问尚未达到计算删除日期的记录:
[query whereKey:@"calculatedDeletionDate" greaterThan:[NSDate date]];
更新:
这里是“保存前云”功能的起点
// include Moment library for easier date handling
var moment = require("moment");
Parse.Cloud.beforeSave("YourClassNameHere", function(request, response) {
var yourClass = request.object;
if (yourClass.dirty("initialDeletionDate")
|| yourClass.dirty("counter"))
{
// recalculate
var initialDate = yourClass.get("initialDeletionDate");
var counter = yourClass.get("counter");
// use Moment library to manipulate the date
var calculatedDate = moment(initialDate)
.add('minutes', counter * 2)
.toDate();
yourClass.set("calculatedDeletionDate", calculatedDate);
}
response.success();
}
谢谢你的回答,蒂莫西。我是否从iOs客户端调用cloudcode方法?如果多个用户同时递增计数器,“calculatedDeletionDate”是否准确?@SanchoSanchez如果创建“保存前云”函数,则它将能够正确更新计算。我会给你的答案加上一个样本,你真是太好了!
// include Moment library for easier date handling
var moment = require("moment");
Parse.Cloud.beforeSave("YourClassNameHere", function(request, response) {
var yourClass = request.object;
if (yourClass.dirty("initialDeletionDate")
|| yourClass.dirty("counter"))
{
// recalculate
var initialDate = yourClass.get("initialDeletionDate");
var counter = yourClass.get("counter");
// use Moment library to manipulate the date
var calculatedDate = moment(initialDate)
.add('minutes', counter * 2)
.toDate();
yourClass.set("calculatedDeletionDate", calculatedDate);
}
response.success();
}