为什么下面的Meteor/mongodb findOne返回未定义
Why is the following Meteor/mongodb findOne returning undefined?
代码:
Template.chapterForm.rendered = ->
Meteor.startup ->
currentChapter = Chapters.findOne(
_id: "Wdyxj8pWg2HPzuDuf"
)
console.log currentChapter
console.log currentChapter.content
我得到以下输出:
未定义
跟踪器afterFlush出现异常函数:无法读取未定义类型的属性"content"错误:
无法读取未定义的属性"content"
我很困惑。是CoffeScript错误还是Meteor/mongodb错误?
(我试着把代码移到文件的顶部。仍然没有定义)
编辑:
奇怪,如果我做
Chapters.findOne({_id: "Wdyxj8pWg2HPzuDuf"});
在控制台中,我确实得到了对象:
Object
-
以下两个表达式在coffeescript 中完全相同
第章findOne(_id:"Wdyxj8pWg2HPzuDuf")
Chapters.findOne({_id:"Wdyxj8pWg2HPzuDuf"})
-
我不知道你为什么在模板实例中使用'Meteor.startup->',这不是一个好方法。在Meteor文档中,"在客户端上,一旦DOM准备好,函数就会运行。"因此findOne操作将在屏幕创建或渲染后立即运行。我认为这可能会破坏Template实例的生命周期顺序,所以只需使用"创建"answers"渲染"周期。
-
此外,从#2开始,在生命周期中,您应该在获取集合(findOne)、某处父模板或路由器代码之前订阅了集合。
所以结论是,在你的浏览器迷你mongo中似乎没有数据。这意味着你需要用"Chapters.find().fetch()"命令在浏览器控制台中进行检查,然后如果你可以在控制台上看到数据,但仍然有相同的错误,你应该检查生命周期,以使订阅清楚。
相关文章:
- 如何缩短MongoDB ObjectId并在Mongoose模式中使用它
- 如何处理node.js节点mongodb中的连接和查询队列
- MongoDB (php) - 以数组而不是多个属性的形式返回文档属性
- 使用mongodb更新中的一个变量
- 键名中的 MongoDB 点 (.)
- 用于视频类型的MongoDB结构's
- Mongodb数千个并行运行的查询
- 等待 MongoDB findOne 回调完成,然后再完成 app.get()
- Node.js MongoDB.findOne在查询字符串时返回最佳匹配
- 为什么下面的Meteor/mongodb findOne返回未定义
- MongoDB=>findOne还是find查询下一个对象?(Meteor/React)
- 什么's更快:' find().limit(1) '或' findOne() '在MongoDB/Mongoos
- MongoDB .findOne scope
- MongoDB确定一条记录是否会通过findOne
- Mongodb findone返回值-数组操作
- MongoDB + Express:如何使用db.collection(). findone()或.find()验证登录
- mongodb的findOne查询不会停止
- MongoDB - findOne使用params id会导致空对象或错误
- MongoDB (Node) findOne 函数在按 ID 搜索时不返回结果
- MongoDB findOne查询没有返回结果或未定义