javascript - notification - parse server
Sintaxis de consulta relacional de Parse Cloud Code (3)
Tengo una función de nube en Parse . Cuando se llama, recupera un PFObject
luego agrega una relación entre ese objeto y el usuario. Esta parte funciona bien (vista hacia el final de la función). Tengo problemas para que la consulta que selecciona el PFObject
ignore aquellos con los que el usuario ya está relacionado
Aquí está mi código:
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");
}
});
});
Estoy seguro de que no entiendo cómo funciona la sintaxis de consulta de relación.
¿Qué pasa con las Restricciones de consulta ?
Si desea recuperar objetos que no coinciden con ninguno de varios valores, puede usar notContainedIn
// Finds objects from anyone who is neither Jonathan, Dario, nor Shawn
query.notContainedIn("playerName",
["Jonathan Walsh", "Dario Wunsch", "Shawn Simon"]);
Creo que Kerem lo tiene parcialmente correcto, pero no contenida no es lo suficientemente dinámico para su caso.
doesNotMatchKeyInQuery construir la consulta a partir de la relación y luego usar doesNotMatchKeyInQuery para excluir esos objetos de su consulta externa.
Este estiramiento:
// 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);
Podría ser cambiado a:
// Also only fetch if never been sent before
query.notContainedIn("sentTo",[Parse.User.current()])
Eso funciona. Consulta Parse