解析 Cloud Code 关系查询语法
Posted
技术标签:
【中文标题】解析 Cloud Code 关系查询语法【英文标题】:Parse Cloud Code relational query syntax 【发布时间】:2014-04-09 10:53:01 【问题描述】:我在Parse 上有一个云功能。当它被调用时,它会检索一个PFObject
,然后在该对象和用户之间添加一个关系。这部分工作正常(见函数末尾)。
我无法获取选择 PFObject
以忽略用户已经相关的查询
这是我的代码:
Parse.Cloud.define("NextMedia", function (request, response)
var LikeRequest = Parse.Object.extend("LikeRequest");
var query = new Parse.Query(LikeRequest);
query.equalTo("completed", false);
console.log("user: " + Parse.User.current().id);
query.notEqualTo("user", Parse.User.current());
// Also only fetch if never been sent before
// HERE SHOULD USE THE BELOW RELATIONSHIP
var innerQuery = new Parse.Query(Parse.User);
innerQuery.exists(Parse.User);
query.matchesQuery("sentTo", innerQuery);
query.ascending("createdAt");
query.first(
success: function (object)
// Successfully retrieved the object.
console.log("Got 1 object: " + object.get('mediaId'));
// Record that the user has been sent it
var user = Parse.User.current();
var relation = object.relation("sentTo"); // RELATION ADDED HERE
relation.add(user);
object.save();
response.success(object);
,
error: function (error)
console.log("Error: " + error.code + " " + error.message);
response.error("Error getting next mediaId");
);
);
我确定我只是不理解关系查询语法的工作原理。
【问题讨论】:
在您的 LikeRequest 类中,您有用户列吗?我不明白 query.notEqualTo("user", Parse.User.current()); 在添加关系的底部,添加了多对多用户列。 抱歉延迟回复。你有没有尝试过这样的事情: var innerQuery = LikeRequest.relation("sendTo").query(); innerQuery.exists(Parse.User); 我已经离开几天了,等我回来再试试。谢谢 现在才意识到这是一个非常古老的问题。你有没有找到解决方案? 【参考方案1】:这一段:
// Also only fetch if never been sent before
// HERE SHOULD USE THE BELOW RELATIONSHIP
var innerQuery = new Parse.Query(Parse.User);
innerQuery.exists(Parse.User);
query.matchesQuery("sentTo", innerQuery);
可以改为:
// Also only fetch if never been sent before
query.notContainedIn("sentTo",[Parse.User.current()])
这行得通。Parse Query
【讨论】:
【参考方案2】:Query Constraints 呢?
如果要检索与多个值中的任何一个都不匹配的对象,可以使用 notContainedIn
// Finds objects from anyone who is neither Jonathan, Dario, nor Shawn
query.notContainedIn("playerName",
["Jonathan Walsh", "Dario Wunsch", "Shawn Simon"]);
【讨论】:
【参考方案3】:我认为 Kerem 部分正确,但 notContained in 对于您的情况来说不够动态。
您需要构造query from the relation,然后使用doesNotMatchKeyInQuery 从外部查询中排除这些对象。
【讨论】:
以上是关于解析 Cloud Code 关系查询语法的主要内容,如果未能解决你的问题,请参考以下文章
Cloud Spanner - `SHOW TABLES` 的等效语法?
SyntaxException: <ErrorMessage code=2000 [CQL 查询中的语法错误] message="Unknown property 'replicati