我是Meteor的新手,这个问题困扰了我好几个小时。

我已经在imports / lib / sessions.js的文件“ sessions.js”中创建了一个集合

import { Meteor } from 'meteor/meteor';
import { Mongo } from 'meteor/mongo';

Sessions = new Mongo.Collection('sessions');


我已经使用浏览器控制台在数据库中创建了一些文档。然后,我想使用模板助手返回一个文档:

import { Template } from 'meteor/templating';
import { Sessions } from '../../../../imports/lib/sessions.js';

Template.CarCamping.helpers({
    test: function() {
        return Sessions.findOne({name: 'David'});
    }
});


这将引发以下错误:

debug.js:41Exception in template helper: TypeError: Cannot read property 'findOne' of undefined
    at Object.test (http://localhost:3000/app/app.js?hash=e301d24dd47ccd4c73ae01a856896ad67acaaca0:77:32)
    at http://localhost:3000/packages/blaze.js?hash=ef41aed769a8945fc99ac4954e8c9ec157a88cea:2994:16
    at http://localhost:3000/packages/blaze.js?hash=ef41aed769a8945fc99ac4954e8c9ec157a88cea:1653:16
    at http://localhost:3000/packages/blaze.js?hash=ef41aed769a8945fc99ac4954e8c9ec157a88cea:3046:66
    at Function.Template._withTemplateInstanceFunc (http://localhost:3000/packages/blaze.js?hash=ef41aed769a8945fc99ac4954e8c9ec157a88cea:3687:12)
    at http://localhost:3000/packages/blaze.js?hash=ef41aed769a8945fc99ac4954e8c9ec157a88cea:3045:27
    at Spacebars.call (http://localhost:3000/packages/spacebars.js?hash=65db8b6a8e3fca189b416de702967b1cb83d57d5:172:18)
    at Spacebars.mustacheImpl (http://localhost:3000/packages/spacebars.js?hash=65db8b6a8e3fca189b416de702967b1cb83d57d5:106:25)
    at Object.Spacebars.mustache (http://localhost:3000/packages/spacebars.js?hash=65db8b6a8e3fca189b416de702967b1cb83d57d5:110:39)
    at ._render (http://localhost:3000/app/app.js?hash=e301d24dd47ccd4c73ae01a856896ad67acaaca0:30:22)


我已经尝试过的


确保启用了自动发布,因此在订阅或发布数据时没有问题。
确保创建集合不仅在服务器上完成。如果我正确理解的话,客户端和服务器都可以访问路径“ imports / lib / sessions.js”。
html包含带有模板名称的模板标签


问题是:当我使用'Sessions.findOne({name:'David'});'从控制台查询数据库时它确实给了我预期的结果。但是从代码本身来看,它是行不通的。

非常感谢帮助!提前致谢。

最佳答案

您不是从Sessions导出imports/lib/sessions.js,所以当您转到import时,不会定义Sessions。尝试这个:

import { Mongo } from 'meteor/mongo';

export const Sessions = new Mongo.Collection('sessions');


您可以在Todos集合here中看到类似的模式。

关于javascript - 控制台中的 meteor 对象可用,但抛出“无法读取属性findOne的未定义”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37380514/

10-10 15:25