正在尝试直接在模板帮助程序中通过_id检索文档,但在meteor中不起作用
我试图通过meteor中文档的正在尝试直接在模板帮助程序中通过_id检索文档,但在meteor中不起作用,meteor,Meteor,我试图通过meteor中文档的\u 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.len
\u 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
的格式传递值?这是我收到的错误消息
模板帮助程序中出现异常:引用错误:未定义lessonData
非常感谢你的帮助
已更新问题,以引用当前错误并建议更改
此外,我不能使用这个项目的铁路由器,因为我使用的聚合物的一些部分,不与它很好地工作
var lessonsData = Lessons.findOne({_id: id}).fetch();
如果使用findOne,则不需要使用fetch直接获取对象,因此fetch()
不是函数
顺便说一下,如果您使用iron路由器,您可以通过执行router.current().params.yourparameter
而不是使用javascript window.location直接获取url的参数
另一个错误是你有
var lessonsData = Lessons.findOne({_id: id}).fetch();
return lessonData;
您可以在第一张带有S的表格上键入lessonsData,而不是在返回的表格上。生成此表格
//url format: http://localhost:3000/lesson/CroFdSKNBriy7QCHL
你应该有这样的东西(例如)
现在是助手
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;
}
});
编辑你的问题,似乎你有一个打字错误,如错误所说
将helper语句的return改为
return lessonsData
谢谢,这是一个局部问题。当我删除fetch时,仍然会出现错误。模板帮助程序中出现异常:引用错误:未定义lessonData。我仍然认为问题是由于id被认为是字符串,但可能是其他原因。不幸的是,我不能使用熨斗路由器,因为我使用的聚合物部分与熨斗路由器不兼容。我更改了答案以回答您的第二个错误:)。这是由于打字错误,不幸的是我不能使用铁路由器。所以我需要手动获取id并通过url获取它。有没有一种方法可以将url中的字符串格式转换为meteor正在寻找的_id类型。uggh。。。非常感谢。我没有意识到我的打字错误。这就解决了问题。没有类型问题!
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;
}
});