Javascript Meteor:无法从数据库插入和拉出

Javascript Meteor:无法从数据库插入和拉出,javascript,mongodb,meteor,Javascript,Mongodb,Meteor,我跟随meteor教程(在这里和那里做一些小的更改),当涉及到插入和从数据库中提取时,我似乎没有太多的运气 这是我的html文件: <head> <title>test server</title> </head> <body> <header> <h1>test server</h1> <div class="loginButton">{{

我跟随meteor教程(在这里和那里做一些小的更改),当涉及到插入和从数据库中提取时,我似乎没有太多的运气

这是我的html文件:

<head>
  <title>test server</title>
</head>

<body>
    <header>
        <h1>test server</h1>
        <div class="loginButton">{{ >loginButtons}}</div>
    </header>
    {{#if currentUser}}
        <nav>
            <h1>Jobs</h1>
            <form class="new-job">
                <input type="text" name="job" placeholder="Type to enter new job">
            </form>
            <ul>
                {{#each jobs}}
                    {{> job}}
                {{/each}}
            </ul>
        </nav>
        <main>
        </main>
    {{/if}}
</body>

<template name="job">
    <li>{{name}}</li>
</template>
我没有对数据库做任何更改(使用meteor预装的数据库)

问题是当我填写表单并提交时,集合中没有存储任何内容。我通过查看数据库本身来验证这一点,但什么都没有

此外,我还使用mongoshell(
db.jobs.insert({name:test,createdAt:new Date()});
)将文档手动插入到集合中,并可以验证该文档是否存在于集合中。但是,它不会出现在无序列表中的网站上

我已经删除了
不安全的
自动发布
软件包,如果这有什么不同的话


我的代码有什么问题导致客户端/服务器无法与数据库通信?

我最终重新创建了项目,从那时起一切都正常工作


在新项目中,我将所有文件都放在根目录中,这似乎可以解决问题,而在我将内容拆分为/client和/server目录之前,您是否在浏览器控制台或服务器中看到任何错误?在浏览器控制台中,我看到调用方法“addJob”时出现的
错误:找不到方法[404]
我不明白,因为这是JS文件底部定义的meteor方法的一部分,我不确定这是否是答案。。。所以另一个评论。。。耶!尝试将对Meteor.methods的调用提升到服务器/客户端逻辑之上。就在您声明
作业
集合之后。我认为这会有所帮助,通常这段代码会被分解成多个文件,这将有助于它的顺利运行。这段代码对我来说非常有用。请确保您已删除不安全和自动发布,并已添加帐户密码和帐户ui,同时确保没有其他代码会弄乱此操作。@我已尝试手动提升meteor方法,但应用程序仍然找不到addJob方法
Jobs = new Mongo.Collection("jobs");

if (Meteor.isServer){
    Meteor.publish("jobs", function(){
        return Jobs.find()
    })
}

if (Meteor.isClient){
    Meteor.subscribe("jobs");

    Template.body.helpers({
        jobs: function(){
            return Jobs.find({}, {sort: {createdAt: -1}}); 
        }
    });

    Template.body.events({
        "submit .new-job": function(event){
            event.preventDefault();

            var name = event.target.job.value;

            Meteor.call("addJob", name);

            event.target.job.value = "";
        }
    })

    Accounts.ui.config({
        passwordSignupFields: "USERNAME_ONLY"
    });
}

Meteor.methods({
    addJob: function(name){
        if (! Meteor.userId()) {
            throw new Meteor.Error("not-authorized");
        }

        Jobs.insert({
            name: name,
            createdAt: new Date(),
            owner: Meteor.userId(),
            username: Meteor.user().username
        });
    }
})