我正在关注Meteor的udemy课程。
复制问题的步骤:
1)关于CMD:
meteor create Leaderboard
cd Leaderboard
meteor npm install
meteor run
(server starts, localhost:3000)
2)然后,我删除了main.css,main.html和amp;的内容。 main.js(在客户端文件夹下)。
3)打开main.js并添加以下行:
PlayersList = new Mongo.Collection('players');
在Chrome的控制台上,我输入了“PlayersList”并获得了以下内容:
M…o.Collection {_transform: null, _connection: Connection, _collection: LocalCollection, _name: "players", _driver: LocalCollectionDriver…}
问题
当我在控制台上输入时:
PlayersList.insert({ name: 'David', score: 0 });
这是错误:
"eebRFhA9vbSfHzPKk"
meteor.js?hash=e3f53db…:930 insert failed: Method '/players/insert' not found
为什么我得到它?我按照教练提供的确切步骤进行操作。这有什么不对?
答案 0 :(得分:2)
该错误是由未在服务器上定义的集合引起的,仅在客户端上。
meteor create app
创建的默认应用包含两个main.js
个文件,一个在client
,另一个在server
文件夹中。这些特别命名的文件夹完全按照您的预期工作 - 其中的内容仅加载在客户端或服务器上。显然,您只将集合定义添加到client
中的集合定义。要解决这个问题,如果你把一个文件放在这些特别命名的文件夹之外 - 比如创建一个名为collections
的文件夹,然后在那里添加一个PlayersList.js
文件并在那里定义你的收藏,那么它们将由两者加载和工作。
或者(这是开发更大的应用程序时推荐的方法)如果将定义集合的文件放入名为imports
的文件夹中,那么您可以import
分别对您的服务器和客户端代码而不是Meteor自动包括它。您可以阅读有关Meteor应用程序结构here的更多信息。
答案 1 :(得分:0)
试试这个: - PlayersList._collection.insert({name:'David',得分:0});