微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我对MongoDB和Meteor.js绝对是新手。我正在尝试按照教程进行操作,尽管我确实在再现老师的所作所为,但我还是被困住了。我正在尝试显示数据库entries中的项目列表,但没有任何显示。我尝试了很多方法,并且console.log记录了很多,但是我从未设法使其正常工作。

这是我的文件

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"),"createdAt" : ISODate("2020-09-22T12:40:59.924Z")
}
{
        "_id" : ObjectId("5f69f1c8434cda7b7f21d194"),"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")
}

如果您可以帮助,那就太好了!

解决方法

我知道,从教程开始非常令人沮丧,因为它不能按预期工作,并且希望以下技巧可以帮助您深入了解流星及其魔术的工作原理。

  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的很好的文章。虽然年代久远,但对于理解这一概念来说是黄金。

如果您对自己的印象有疑问,需要来回交流,请加入the Meteor community on Slack

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。