2015-07-21 18 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

相關問題