2015-07-21 42 views
1

我试图操纵通过Deepstream与新的dataTransforms API发送回客户端的数据,但是,我总是得到Uncaught SyntaxError: Unexpected end of input在控制台。可能需要太长时间来为Deepstream进行数据库查找,但我不太确定。Deepstream.io中的dataTransform在控制台中给出'Uncaught SyntaxError:意外的输入结束'

我的相关代码:

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; 
    } 
}; 

每当有从记录中读取它会检查它是否是从球队战绩一读。如果它是从团队记录中读取的,它将获取作为该团队一部分的所有成员并将其添加到成员:{}。

当它遍历所有成员并添加关于它们的信息时,它将返回新的数据。

那么,任何想法可能是错误的?

我是否了解dataTransforms错误?

回答

2

由于性能方面的原因,所有数据转换都预计会同步返回一个结果。

r.table('user').get(members.user_id).run() 
     .then(... 

然而异步运行,并将其值返回到then所使用的功能,而不是的DataTransform功能。无论是否应用转换,始终返回数据也至关重要。

如果我理解正确,您的用例将从RethinkDb服务器为多个用户加载信息。我可能会建议使用此用例的记录名的list或建立一个data provider与RethinkDb进行交互。

+0

会尝试这个时间=) 但是,我们决定去为这个特定问题的另一条路线。谢谢回复! – jwanglof

相关问题