Meteor Single collection Field可编辑内容

时间:2015-05-11 23:03:19

标签: javascript meteor insert-update

我试图通过更新功能使流星模板中的元素可编辑。从fixture.js代码中的服务器端代码插入数据时,数据会发生变化。但是,我没有运气通过可编辑的表格更新它与一些Template.name.events({});代码,并创建一个集合,发布和订阅它。最后一段代码是fixture.js文件。所以在某些方面我可以插入到集合中并更新它,但我对编辑financialsEdit模板没有好运。我添加的router.js文件仅包含有关financials模板的部分。如果需要,我会发布更多。

基本上我无法使用$set更新函数并传递键值对来更新集合值。

UPDATE :我在lib目录中添加了permissions.js文件,以显示ownsDocument返回的内容。

这是我的代码。

客户目录

client/editable/edit_financial.js

Template.financialsEdit.events({
  'submit .financialsEdit': function(e) {
    e.preventDefault();

    var currentFinanceId = this._id;

    var financialsProperties = {
      issuedOutstanding: $('#issuedOutstanding').val()
    }

    Financials.update(currentFinanceId, {$set: financialsProperties}, function(error) {
      if (error) {
        alert(error.reason);
      } else {
        console.log(financialsProperties);
        // Router.go('financials');
        Router.go('financials');
      }
    });

  }

});

client/editable/financials_helpers.js

Template.financials.helpers({
  financials: function() {
    return Financials.find();
  },
  ownFinancial: function() {
    return this.userId === Meteor.userId();
  }
});

client/editable/financials

<template name="financials">
  <div id="finance">
  {{#each financials}}
   <h2>Issued Outstand : {{issuedOutstanding}}</h2>
  {{/each}}
  </div>
</template>

client/editable/financials_edit.html

<template name="financialsEdit">
  <form class="main form financialsEdit">
    <input id="issuedOutstanding" type="number" value="{{issuedOutstanding}}" placeholder="{{issuedOutstanding}}" class="form-control">
    <input type="submit" value="Submit" class="submit"/>
  </form>
</template> 

lib目录 lib/router.js

Router.route('/financials', function () {
  this.render('financials');
});
Router.route('/financialsedit', {name: 'financialsEdit'});

lib/collections/financials.js

Financials = new Mongo.Collection('financials');

Financials.allow({
  update: function(userId, financial) { return ownsDocument(userId, financial); },
  remove: function(userId, financial) { return ownsDocument(userId, financial); },
});

Financials.deny({
  update: function(userId, financial, fieldNames) {
    // may only edit the following two fields:
    return (_.without(fieldNames, 'issuedOutstanding').length > 0);
  }
});

lib/permissions.js

// check that the userId specified owns the documents
ownsDocument = function(userId, doc) {
  return doc && doc.userId === userId;
}

server/publications.js

Meteor.publish('financials', function() {
  return Financials.find();
});

server/fixture.js

if (Financials.find().count() === 0) {
  Financials.insert({
    issuedOutstanding: '43253242'
  });
}

0 个答案:

没有答案