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 及其神奇的工作原理。
- 确保集合已在服务器和客户端上注册。对您来说,这意味着确保文件
collection.js
在两个环境中运行。您可以通过将 console.log()
放入文件中来确认这一点。如果您在终端和浏览器的控制台中都看到了输出,请继续。这在使用 autopublish
包时特别重要。
- 确保数据发布到客户端。这发生在
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
以确认数据已到达浏览器。
- 现在 Blaze 的工作是了解更改(数据正在进入浏览器的集合)并更新它。
这是一篇关于 Meteors publications & subscriptions 的非常好的文章。它很旧,但是对于理解这个概念来说是黄金。
如果您有任何疑问需要 back-and-forth 交流,请加入 the Meteor community on Slack。
我对 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 及其神奇的工作原理。
- 确保集合已在服务器和客户端上注册。对您来说,这意味着确保文件
collection.js
在两个环境中运行。您可以通过将console.log()
放入文件中来确认这一点。如果您在终端和浏览器的控制台中都看到了输出,请继续。这在使用autopublish
包时特别重要。 - 确保数据发布到客户端。这发生在
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
以确认数据已到达浏览器。 - 现在 Blaze 的工作是了解更改(数据正在进入浏览器的集合)并更新它。
这是一篇关于 Meteors publications & subscriptions 的非常好的文章。它很旧,但是对于理解这个概念来说是黄金。
如果您有任何疑问需要 back-and-forth 交流,请加入 the Meteor community on Slack。