我有一个关于解析云代码的问题。以下云代码在迁移前用云代码编写,但在迁移后它没有返回所需的输出。
var streamClass = Parse.Object.extend("Streams");
streamObj = new streamClass({
objectId: "dummy",
streamerId: usersArr[i]
});
streamObj.dirty = function() {return false;};
有两个实体,即流和用户。每个用户都有流。因此在流表中有用户指针(streamerId)。如果用户没有创建任何流,那么我正在创建流虚拟对象并将用户(streamerId)设置为流对象中的指针。当此代码作为API调用时,它在解析服务器迁移之前返回带有用户(streamerId)信息的流虚拟对象。迁移后,上面的代码给出了以下输出。
{
"result": [
{
"__type": "Pointer",
"className": "Streams",
"objectId": "dummy"
}
]
}
可以注意到输出中没有用户(streamerId)信息。在这方面,有谁可以帮助我。
我没有保存此streamObj。我将此streamObj返回给IOS应用程序。我还通过google chrome中的邮递员测试了它。以下是一个完整的函数,它接受用户对象的数组和流对象的数组,并返回一个包含用户及其相关流的对象。
function getUsersAndRecentStreams(usersArr, streamsArr) {
var responseObj = [];
var moment = require('moment');
var now = moment();
var currentDate = new Date();
for( var i=0; i<usersArr.length; i++ ) {
var streamObj = null;
for( j=0; j<streamsArr.length; j++ ) {
var streamerObj = streamsArr[j].get('streamerId');
if( streamerObj.id === usersArr[i].id ) {
if( moment(streamsArr[j].get('showTimeStart')) <= now && moment(streamsArr[j].get('showTimeEnd')) >= now ) {
streamObj = streamsArr[j];
break;
}
if( streamObj == null) {
streamObj = streamsArr[j];
}
else {
if( moment(streamsArr[j].get('showTimeStart')) <= now ) {
streamObj = streamsArr[j];
}
}
}
}
if( streamObj == null ) {
var streamClass = Parse.Object.extend("Streams");
streamObj = new streamClass({
objectId: "dummy",
streamerId: usersArr[i]
});
streamObj.dirty = function() {return false;};
var streamObj = new streamObj();
}
responseObj.push(streamObj);
}
return responseObj;
}
有两种情况。 1)当streamObj不为null时。在这种情况下,输出是正确的。 2)streamObj为null时的第二种情况。在这种情况下,以下输出是返回,这是不希望的。
{
"result": [
{
"__type": "Pointer",
"className": "Streams",
"objectId": "dummy"
}
]
}
当streamObj为null时,以下所需的输出应返回此函数。
{
"result": [
{
"__type": "Pointer",
"className": "Streams",
"objectId": "dummy",
"StreamerId": userObject
}
]
}