Meteor:将数据输入到新集合

时间:2015-08-02 23:37:16

标签: javascript mongodb meteor

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

  

"拒绝访问。不允许在限制集合上设置验证器   方法'插入' [403]"

模板:

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

collections.es6.js

Casuistry = new Mongo.Collection('casuistry')
Casuistry.attachSchema(new SimpleSchema({
  title: {type: String},
  caseNumber: {type: Number, defaultValue: 0},
  htmlContent: {type: String, defaultValue: '[]'},
}))

casuistry.es6.js

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
  }
})

1 个答案:

答案 0 :(得分:4)

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

您可以使用allow / deny或使用methods(强烈推荐!)。我不会对方法与允许/拒绝,there are good blog posts available on this topic进行太深入的讨论,但总的来说:允许/拒绝很难正确,你只需要在方法中有更多的控制权。

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

ng-repeat

在这种情况下,您将使用与您完全一样的收藏 - 因为它只是一个客户端集合,没有理由担心有人篡改您的“真实”数据。