订阅收藏(流星)

时间:2015-07-28 12:36:16

标签: javascript meteor admin

我有一些具体问题。 我使用MeteorJS并安装了yogiben:admin。我试图构建一些模式,但更新后我有一个错误。 我想补充一点,我在页面中有子页面,也许这就是问题所在?

这是我在发票中添加商品后得到的结果: http://s7.postimg.org/l0q52l27v/error.png

正如我在图片中看到的,问题在于一些修饰符和" After.Update.sum"。我使用的函数是" sum"。

在我的" server / collections / invoices_item.js" 我有:

InvoicesItem.after.update(function(userId, doc, fieldNames, modifier, options) {
var sum = 0; InvoicesItem.find({ invoiceId: doc.invoiceId }).map(function(item) { sum += item.amount; }); Invoices.update({ _id: doc.invoiceId }, { $set: { totalAmount: sum }});
});

比我看到问题可能是" totalAmount:sum"。我使用Chrome,所以我尝试了#34; console.log()"查看该页面是否包含我的收藏。 它没有。

我使用Chrome,所以我试着看看控制台会给我什么。我有这样的事情:http://s4.postimg.org/rusm4wx9p/fakturka.png

我在服务器端的代码中做了类似的事情:

Meteor.publish("fakturka", function(invoiceId) {
    return Invoices.find({_id:invoiceId,ownerId:this.userId}, {});
});

在客户端做到了这一点:

this.InvoicesNewInsertController = RouteController.extend({ 
template: "InvoicesNew",            
    yieldTemplates: {
        'InvoicesNewInsert': { to: 'InvoicesNewSubcontent'}         
    },    
    onBeforeAction: function() {
        /*BEFORE_FUNCTION*/
        this.next();
    },    
    action: function() {
        if(this.isReady()) { this.render(); } else { this.render("InvoicesNew"); this.render("loading", { to: "InvoicesNewSubcontent" });}
        /*ACTION_FUNCTION*/
    },    
    isReady: function() {               
        var subs = [
            Meteor.subscribe("invoices_item"),
            Meteor.subscribe("invoiceeeee"),
            Meteor.subscribe("customers"),
            Meteor.subscribe("fakturka", this.params.invoiceId),
            Meteor.subscribe("invoices_item_empty_faktura"),
            Meteor.subscribe("invoices_itemss_faktura", this.params.invoiceId)
        ];
        var ready = true;
        _.each(subs, function(sub) {
            if(!sub.ready())
                ready = false;
        });
        return ready;
    },    
    data: function() {              
        return {
            params: this.params || {},
            invoices_item: InvoicesItem.find({}, {}),
            invoiceeeee: Invoices.find({}, {}),
            customers: Customers.find({}, {}),
            fakturka: Invoices.findOne({_id:this.params.invoiceId}, {}),
            invoices_item_empty_faktura: InvoicesItem.findOne({_id:null}, {}),
            invoices_itemss_faktura: InvoicesItem.find({invoiceId:this.params.invoiceId}, {})
        };
        /*DATA_FUNCTION*/
    },    
    onAfterAction: function() {
    }
});

我很抱歉这么多代码,但我真的想解决这个问题,我想提供尽可能多的信息。请帮我解决问题。

1 个答案:

答案 0 :(得分:0)

从:/ collections / invoices.js

中删除该代码后
Schemas={};
Schemas.Invoicess = new SimpleSchema({
    invoiceNumber:{
        type:Number
    },
    date_issued:{
        type:Date
    },
    date_due:{
        type:Date
    },
    customerId:{
        type:String
    },
    totalAmount:{
        type:String
    }
});
Invoices.attachSchema(Schemas.Invoicess);

" fakturka"是可见的。添加该代码后 - " fakturka"在未定义。