Meteor.js 和 MongoDB,我在操作数据库时遇到问题

Meteor.js and MongoDB, I have problems manipulating my Databases

我对 MongoDB 和 Meteor.js 都是全新的。我正在尝试按照教程进行操作,尽管事实上我正在重现老师所做的事情,但我还是被卡住了。我正在尝试显示数据库 entries 中的项目列表,但没有显示任何内容。我尝试了很多方法,console.logged 很多,但我从来没有设法让它工作。

这是我的文件:

1/main.html

<body>
  <h3 class="title">Welcome!</h3>

  <div class="container list">
    <ul class="collection">
      {{#each entries}}
        {{> list}}
      {{/each}}
    </ul>
  </div>

</body>

<template name="list">
  <li class="collection-item"> {{title}}
  </li>
</template>

2/main.js

import { event } from 'jquery';
import { Template } from 'meteor/templating';
import { Entries } from '../lib/collection.js';

import './main.html';

Template.body.helpers({
  entries(){
    return [Entries.find({})];
  },
});

3/collection.js

import { Mongo } from 'meteor/mongo';

export const Entries = new Mongo.Collection('entries');

这是我在 运行 meteor mongo 之后在命令行中创建的数据库,当我输入命令时:db.entries.find().pretty()

{
        "_id" : ObjectId("5f69ef84eda325daca4b0d51"),
        "title" : "Hello",
        "content" : "try hard"
}
{
        "_id" : ObjectId("5f69f0db434cda7b7f21d193"),
        "title" : "Hello",
        "createdAt" : ISODate("2020-09-22T12:40:59.924Z")
}
{
        "_id" : ObjectId("5f69f1c8434cda7b7f21d194"),
        "title" : "Hello",
        "createdAt" : ISODate("2020-09-22T12:44:56.230Z")
}
{ "_id" : ObjectId("5f69f2c3434cda7b7f21d195"), "name" : "Watercress" }
{
        "_id" : ObjectId("5f69f6012a6382ef314d84cb"),
        "title" : "goodbye",
        "createdAt" : ISODate("2020-09-22T13:02:57.511Z")
}
{
        "_id" : ObjectId("5f69f6bf2a6382ef314d84cd"),
        "title" : "fresh",
        "createdAt" : ISODate("2020-09-22T13:06:07.561Z")
}

如果你能帮忙,那就太好了!

我知道,开始学习教程非常令人沮丧,因为它没有按预期工作,我希望以下提示可以帮助您深入了解 Meteor 及其神奇的工作原理。

  1. 确保集合已在服务器和客户端上注册。对您来说,这意味着确保文件 collection.js 在两个环境中运行。您可以通过将 console.log() 放入文件中来确认这一点。如果您在终端和浏览器的控制台中都看到了输出,请继续。这在使用 autopublish 包时特别重要。
  2. 确保数据发布到客户端。这发生在
    2.1 安装包 autopublish(查看文件 .meteor/packages。如果没有,可以使用 meteor add autopublish 安装)或
    2.2 马上跳转到手动发布数据(https://www.meteor.com/tutorials/blaze/publish-and-subscribe)。

    安装扩展程序 Meteor DevTools for Chrome,打开开发者工具栏,切换到选项卡 Meteor,然后转到内部选项卡 Minimongo 以确认数据已到达浏览器。
  3. 现在 Blaze 的工作是了解更改(数据正在进入浏览器的集合)并更新它。

这是一篇关于 Meteors publications & subscriptions 的非常好的文章。它很旧,但是对于理解这个概念来说是黄金。

如果您有任何疑问需要 back-and-forth 交流,请加入 the Meteor community on Slack