2015-04-03 31 views
1

我想通過文檔的_id直接在流星中檢索文檔。試圖通過_id直接在模板助手中檢索文檔不工作在流星

這裏是我的幫手:

Template.lesson.helpers({ 
    lesson: function() { 
     //url format: http://localhost:3000/lesson/CroFdSKNBriy7QCHL 

    var url = window.location.href; 
    var result= url.split('/'); 
    var id = result[result.length-1]; 
    console.log('url: '+url); 
    console.log('id: '+id); 
    var lessonsData = Lessons.findOne({_id: id}); 
    return lessonsData; 
    } 
}); 

這正確抓取URL中的ID。

我認爲這個問題是以id爲字符串格式。

我該如何傳遞格式meteor/mongo的值是否在尋找id?這是我收到的錯誤消息。

Exception in template helper: ReferenceError: lessonData is not defined

非常感謝您的幫助!

已更新的問題引用當前錯誤並提出了更改。

另外我不能使用鐵路由器這個項目,因爲我使用的聚合物的某些部分不能很好地使用它。

回答

1

生成此。

//url format: http://localhost:3000/lesson/CroFdSKNBriy7QCHL 

你應該有這樣的事情(例如)。

//Router.js 
    Router.route('/lesson/:_id', { 
     name: 'lesson', 
     data: function() { 
     Session.set('lessonId',this.params._id) //take the id from here. 
     return Lessons.findOne({_id: this.params._id); 
     } 
    }); 

現在在幫手上。

Template.lesson.helpers({ 
     lesson: function() { 
      //url format: http://localhost:3000/lesson/CroFdSKNBriy7QCHL 
     var id = Session.get('lessonId') 
     var lessonsData = Lessons.findOne({_id: id}); //like around says you don't need the fetch(), since you are only returning 1 object. 
     return lessonsData; 
    } 
    }); 

編輯你的問題,好像你有一個錯字錯誤,就像錯誤說的那樣。

將幫手聲明的回報更改爲return lessonsData

+0

不幸的是我不能使用鐵路由器。所以我需要手動獲取id並通過url抓取它。有沒有辦法將字符串格式從網址轉換爲流星正在尋找_id類型。 – 2015-04-03 16:04:29

+0

uggh ...非常感謝。我沒有意識到我的錯字。那固定的東西。沒有類型問題! – 2015-04-03 16:06:45

0
var lessonsData = Lessons.findOne({_id: id}).fetch(); 

如果使用findOne你不需要使用抓取您直接獲得,因此該對象fetch()不是一個函數。

順便說一句,如果你使用鐵路路由器,你可以直接通過Router.current().params.yourparameter而不是使用javascript window.location來獲得url的params。

另一個錯誤是,你有

var lessonsData = Lessons.findOne({_id: id}).fetch(); 
    return lessonData; 

你在第一個以S,而不是返回類型lessonsData。

+0

謝謝,這是一個部分問題。我刪除抓取時仍然出現錯誤。模板助手中的異常:ReferenceError:lessonData未定義。我仍然認爲這個問題是由於id被認爲是一個字符串,但也許是其他的東西。不幸的是,我不能使用鐵路路由器,因爲我使用的某些聚合物部件不適合鐵路由器。 – 2015-04-03 15:54:45

+0

我改變了我的答案來回答你的第二個錯誤:)。這是由於錯誤 – 2015-04-03 15:59:27