dataTransform in Deepstream.io gives 'Uncaught SyntaxError: Unexpected end of input' in the console
dataTransform in Deepstream.io gives 'Uncaught SyntaxError: Unexpected end of input' in the console
我正在尝试使用新的 dataTransforms
API 操作通过 Deepstream 发送回客户端的数据,但是,我总是在控制台中得到 Uncaught SyntaxError: Unexpected end of input
。可能是为 Deepstream 进行数据库查找花费的时间太长,但我不太确定。
我的相关代码是:
DSServer.set('dataTransforms', [
{
topic: DSServer.constants.TOPIC.RECORD,
action: DSServer.constants.ACTIONS.READ,
transform: transformRecord
}
]);
var transformRecord = function (data, metadata) {
if (metadata.recordName.split('/')[0] === 'team') {
var new_member_info = [];
var i = 0;
_.forEach(data.members, function (members) {
r.table('user').get(members.user_id).run()
.then(function (doc) {
if (doc !== null) {
new_member_info.push({
user_id: members.user_id,
display_name: doc._d.display_name,
username: doc._d.username
});
i += 1;
if (i === data.members.length) {
data.members = new_member_info;
return data;
}
}
})
.error(function (err) {
console.error(err);
});
});
} else {
return data;
}
};
只要有从记录中读取的信息,它就会检查它是否是从团队记录中读取的。如果它是从团队记录中读取的,它将获取属于该团队的所有成员并将其添加到成员:{}。
当它遍历所有成员并添加有关它们的信息时,它将 return 新数据。
那么,知道哪里出了问题吗?
我理解的dataTransforms
错了吗?
出于性能原因,所有数据转换都应同步 return 结果。
r.table('user').get(members.user_id).run()
.then(...
但是异步运行,return将其值赋给 then
中使用的函数,而不是 dataTransform 函数。始终 return 数据也很重要,无论是否应用转换。
如果我理解正确,您的用例是从 RethinkDb 服务器加载大量用户的信息。我可能会建议使用 list of recordnames for this usecase or build a data provider 与 RethinkDb 交互。
我正在尝试使用新的 dataTransforms
API 操作通过 Deepstream 发送回客户端的数据,但是,我总是在控制台中得到 Uncaught SyntaxError: Unexpected end of input
。可能是为 Deepstream 进行数据库查找花费的时间太长,但我不太确定。
我的相关代码是:
DSServer.set('dataTransforms', [
{
topic: DSServer.constants.TOPIC.RECORD,
action: DSServer.constants.ACTIONS.READ,
transform: transformRecord
}
]);
var transformRecord = function (data, metadata) {
if (metadata.recordName.split('/')[0] === 'team') {
var new_member_info = [];
var i = 0;
_.forEach(data.members, function (members) {
r.table('user').get(members.user_id).run()
.then(function (doc) {
if (doc !== null) {
new_member_info.push({
user_id: members.user_id,
display_name: doc._d.display_name,
username: doc._d.username
});
i += 1;
if (i === data.members.length) {
data.members = new_member_info;
return data;
}
}
})
.error(function (err) {
console.error(err);
});
});
} else {
return data;
}
};
只要有从记录中读取的信息,它就会检查它是否是从团队记录中读取的。如果它是从团队记录中读取的,它将获取属于该团队的所有成员并将其添加到成员:{}。
当它遍历所有成员并添加有关它们的信息时,它将 return 新数据。
那么,知道哪里出了问题吗?
我理解的dataTransforms
错了吗?
出于性能原因,所有数据转换都应同步 return 结果。
r.table('user').get(members.user_id).run()
.then(...
但是异步运行,return将其值赋给 then
中使用的函数,而不是 dataTransform 函数。始终 return 数据也很重要,无论是否应用转换。
如果我理解正确,您的用例是从 RethinkDb 服务器加载大量用户的信息。我可能会建议使用 list of recordnames for this usecase or build a data provider 与 RethinkDb 交互。