Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Meteor:将数据输入到新集合_Javascript_Mongodb_Meteor - Fatal编程技术网

Javascript Meteor:将数据输入到新集合

Javascript Meteor:将数据输入到新集合,javascript,mongodb,meteor,Javascript,Mongodb,Meteor,我尝试在集合中插入一些元素。这是我第一次尝试使用Meteor/MongoDB。所以我不明白我做错了什么。 当我尝试保存一个新标题时,我得到了一个错误 “访问被拒绝。不允许对的受限集合设置验证程序。” 方法“插入”。[403]” 模板: <template name="casuistry"> <div class="create"> <form> <input type="text" name="title"

我尝试在集合中插入一些元素。这是我第一次尝试使用Meteor/MongoDB。所以我不明白我做错了什么。 当我尝试保存一个新标题时,我得到了一个错误

“访问被拒绝。不允许对的受限集合设置验证程序。” 方法“插入”。[403]”

模板:

<template name="casuistry">
    <div class="create">
        <form>
            <input type="text" name="title" placeholder="Title">
            <button>Add</button>
        </form>
    </div>
</template>
casuistry.es6.js

Casuistry = new Mongo.Collection('casuistry')
Casuistry.attachSchema(new SimpleSchema({
  title: {type: String},
  caseNumber: {type: Number, defaultValue: 0},
  htmlContent: {type: String, defaultValue: '[]'},
}))
Template.casuistry.events({
  'submit .create form' (e, t) {
    var title = t.val('title')
    Casuistry.insert({title}, (err, _id) => {
      if (err) {
        console.log(err)
        return
      }
      t.val('title', '')
      Router.go('casuistry', {_id})
    })
    return false
  }
})

您正试图从客户端插入到集合中。如果没有包,您必须首先定义服务器端允许和不允许的内容,以确保用户不只是插入/删除/更新他们想要的内容

您可以使用/或(强烈推荐!)。我不打算深入讨论方法与允许/拒绝的比较,但一般来说:允许/拒绝很难正确,你只是在方法中有更多的控制权

需要注意的是,还可以通过将
null
传递到构造函数中来定义客户端集合:

var clientCollection = new Mongo.Collection(null);

在这种情况下,您将完全像以前一样使用该集合-因为它是一个仅限于客户端的集合,所以没有理由担心有人篡改您的“真实”数据。

听起来像是一些出版物问题。因为您处于开发阶段,所以应该启用自动发布。你把它拿走了吗?如果是,则必须创建“发布”或“订阅”。通过从命令行运行“meteor console”,尝试从meteor控制台中的提交回调运行代码。如果它能工作,那么这就是一个访问问题。因为我正在使用一个示例应用程序,我想扩展它(为了学习meteor的工作原理),我添加了上面显示的部分。因此,在示例应用程序中,一个类似的模块正在工作,但我自己添加的这个新部件不起作用,我不明白为什么。我添加了
Meteor.subscribe('casuistry')
,但这也没有帮助…因为我现在处于“开发模式”,所以我没有立即删除不安全的包。所以我不认为这是目前的问题……好的,谢谢。如果我使用的是
null
,那么一切都正常。所以我必须使用一些方法,对吗?@user3142695它可以工作,因为它没有服务器端检查。如果您使用实际的集合名称,Meteor希望您验证是否允许用户插入数据;否则会有邪恶的人接管你的数据库。您可以使用方法(推荐)或仅为集合上的insert函数定义允许/拒绝规则。我强烈建议大家看看链接的博客,这几乎是必读的。