我在云代码中调用这个函数(这是一个非常简单的搜索函数,以绕过php sdk没有"contains"的事实):
Parse.Cloud.define("searchVenues", function(request,response) {
var query = new Parse.Query("Venue");
query.contains("nameLowercase",request.params.term);
query.find({
success: function(results){
response.success(results);
},error: function(){
response.error("Cloud Venue search failed");
}
});
});
我在php脚本中调用它,如下所示:
$search_result = ParseCloud::run("searchVenues", ["term" => $term]);
这个函数以前是工作的!但是现在我得到了一个错误和以下堆栈跟踪:
: Uncaught exception 'Exception' with message 'DateTime::__construct() expects parameter 1 to be string, array given' in C:'xampp'htdocs'bcweb'vendor'parse'php-sdk'src'Parse'ParseObject.php:683
Stack trace:
#0 C:'xampp'htdocs'bcweb'vendor'parse'php- sdk'src'Parse'ParseObject.php(683): DateTime->__construct(Array)
#1 C:'xampp'htdocs'bcweb'vendor'parse'php-sdk'src'Parse'ParseObject.php(631): Parse'ParseObject->_mergeMagicFields(Array)
#2 C:'xampp'htdocs'bcweb'vendor'parse'php-sdk'src'Parse'ParseObject.php(599): Parse'ParseObject->mergeFromServer(Array, true)
#3 C:'xampp'htdocs'bcweb'vendor'parse'php-sdk'src'Parse'ParseClient.php(198): Parse'ParseObject->_mergeAfterFetch(Array)
#4 C:'xampp'htdocs'bcweb'vendor'parse'php-sdk'src'Parse'ParseClient.php(209): Parse'ParseClient::_decode(Array)
#5 C:'xampp'htdocs'bcweb'vendor'parse'php-sdk'src'Parse'ParseCloud.php(35): Parse'ParseClient::_decode(Array)
#6 C:'xampp'htdocs'bcweb'lrs'makeCrawl.php(21): Parse'ParseCloud::run('searchVenues', Array)
#7 {main}
我想象不出是什么把它弄坏了?我还有一个配套函数,它也在新记录上创建namelowcase字段。这是在函数正常工作的快乐时光,所以我无法想象它的存在与错误有任何关系:
Parse.Cloud.beforeSave("Venue", function(request, response) {
if (request.object.get("name")) {
request.object.set("nameLowercase",request.object.get("name").toLowerCase());
}
response.success();
});
字符串中有一些单引号,但它们以前也在那里。谁能有知识的解析php-sdk解释什么可能是这里的问题?谢谢!
解析php-sdk错误。将php-sdk更新到1.1.9版本修复了这个问题,代码可以像以前一样工作。