2017-04-01 4 views
0

복합 쿼리를 정렬하는 Parse Server v2.3.7 (Parse JS SDK v1.9.2 포함)에서 작동하도록하는 데 문제가 있습니다. 원래 쿼리에서 오름차순/내림차순 쿼리 메서드를 사용할 수 있지만 복제하면 더 이상 작동하지 않습니다. 왜 이것이 작동하지 않는지 또는 쿼리를 복제하는 더 나은 방법이 있습니까?Parse JS SDK 복합 쿼리에서 밑줄 _.clone()이 작동하지 않습니다.

var firstQuery = new Parse.Query('Object'); 
firstQuery.equalTo('property', 1); 
var secondQuery = new Parse.Query('Object'); 
secondQuery.equalTo('property', 2); 

var query = Parse.Query.or(firstQuery, secondQuery); 
query.descending('updatedAt'); 
// This works 
var clonedQuery = _.clone(query); 
clonedQuery.ascending('updatedAt'); 
// Throws error "clonedQuery.ascending is not a function" 

이 문제를 계속 : How can I clone a Parse Query using the Javascript SDK on Parse Cloud Code?

+0

좋아, Underscore.js를 사용해도 가능합니다. 나는 나의 대답을 업데이트했다. – user7771338

답변

1

이 Underscore.js하지 않는 Lodash.js이하는 한 가지가있다

업데이트되었습니다. Underscore.js가 prototypeundefined으로 설정하는 동안 Lodash.js는 프로토 타입을 복사합니다. Underscore.js와 함께 작동하려면 수동으로 프로토 타입을 복사해야합니다.

var Parse = require('parse').Parse; 
var _ = require('underscore'); 

var firstQuery = new Parse.Query('Object'); 
firstQuery.equalTo('property', 1); 
var secondQuery = new Parse.Query('Object'); 
secondQuery.equalTo('property', 2); 

var query = Parse.Query.or(firstQuery, secondQuery); 
query.descending('updatedAt'); 
// This works 
var clonedQuery = _.clone(query); 
Object.setPrototypeOf(clonedQuery, Object.getPrototypeOf(query)); // This line is very important! 
clonedQuery.ascending('updatedAt'); 
// This works too 
+0

흠, 실제로 lodash가 아닌 v1.8.3 밑줄을 사용하고 있습니다. 나는 또한 체크하고, parse-server를 사용하고 있기 때문에 실제로 parse v1.9.2를 사용하고있다. 질문 업데이트 중 ... – enjoyjeremy

+0

기존 코드 외부에서 별도의 테스트를 해보겠습니다. – enjoyjeremy

+0

@enjoyjeremy. 좋아, Underscore.js에서도 가능합니다. 나는 나의 대답을 업데이트했다. – user7771338