2014-10-04 45 views
0

考虑的对象:不能与Parse.com API查询

_user:(ID,姓名等)

旅行:(ID,_user,的startDate,结束日期,备注)

是有可能使用Parse JavaScript API来查找没有任何旅行的用户?在SQL中它将是:

SELECT * FROM _User WHERE id NOT IN (SELECT _User FROM Trips) 

这是可能的解析没有选择所有用户,然后检查每个人是否有旅行?

也许这个问题在代码中更好地表达:

var Trip = Parse.Object.extend("Trip"); 
var innerQuery = new Parse.Query(Trip); 
var query = new Parse.Query(Parse.User); 

query.doesNotMatchQuery("???", innerQuery); 
query.find({ 
    success: function(users) { 
    users.forEach(function(u){ 
     console.log(u.get('name')); 

     }); 
    } 
}); 

我应该走在??? User_Userid返回所有用户,而不是那些没有Trips的用户。

+0

亲爱Lewis42,目前您使用的API? IOS?的android? REST API? JavaScript的? PHP的?我不明白你的意思是Parse API? – kingspeech 2014-10-04 15:23:30

+0

这是Javascript,我已经将它添加到问题。我只是假设所有语言的API都提供了几乎相同的方法,我的不好。 – Lewis42 2014-10-04 23:58:55

回答

0

最后,我用这个承诺,可以找到没有办法做到“开箱即用”。将它包装到云代码中几乎肯定是最好的。

下面是一些示例代码:

// Setup outer query 
var query = new Parse.Query("Trip"); 
query.include('nomad'); 

query.find().then(function(tripsStartingNextWeek) { 
    var promises = []; 

    tripsStartingNextWeek.forEach(function(t){ 
    promises.push((function(t){ 

     var promise = new Parse.Promise(); 

     var toNomad = t.get('nomad'); 

     // inner query 
     var myFutureTrips = new Parse.Query("Trip"); 
     myFutureTrips.notEqualTo('deleted', true); 

     myFutureTrips.find().then(function(futureTrips) { 
     // these records match both queries 
     if (futureTrips.length > 0) { 
      // do something 
     } else { 
      // do something else 
     } 

     promise.resolve(); 
     }); 

     return promise; 
    })(t)); 
    }); 

    return Parse.Promise.when(promises); 
}) 
.then(function() { 
    status.success("Last trip job finished"); 
});