Meteor不更新子文档不起作用

时间:2016-10-25 21:23:05

标签: mongodb meteor

大家好,我可以告诉我为什么我不能更新我的子文件。我可以更新普通文档字段,但不能更新我在此处硬编码的方法的子文档,只是为了让它能够工作。

import { Mongo } from 'meteor/mongo';
import { check } from 'meteor/check';
import './Months.js';

export const Product = new Mongo.Collection('product');

ProductItem = new SimpleSchema({    
    author: {
        type: String,
        autoValue: function() {
            return this.userId
        },
        autoform: {
            type: "hidden"
        }
    },
    fileId: {
        type: String,
        autoValue: function() {
            return this._id
        },
        autoform: {
            type: "hidden"
        }
    },
    name: {
        type: String
    },
    sellingPrice: {
        type: Months,
        autoform: {
            type: "hidden"
        },
    },
    purchasePrice: {
        type: Months,
        autoform: {
            type: "hidden"
        },
    }
});

Product.allow({
    insert: function (userId, doc) {
        // the user must be logged in, and the document must be owned by the user
        return !!userId;
    },
    update: function (userId, doc) {
        // can only change your own documents
        return !!userId;
    },
    remove: function (userId, doc) {
        // can only remove your own documents
        return doc.owner === userId;
    },
    fetch: ['owner']
});


Meteor.methods({
    updateProduct: function(id, newVal, target, inner) {
        console.log(id + "" + target);
        Product.update(id, {
            $set: {'sellingPrice.$.M1': 10 },
        });
    },
});



Product.attachSchema( ProductItem );

我也试过

Meteor.methods({
    updateProduct: function(id, newVal, target, inner) {
        console.log(id + "" + target);
        Product.update(id, {
            $set: {'sellingPrice.$': {'M1': 10} },
        });
    },
});

Meteor.methods({
    updateProduct: function(id, newVal, target, inner) {
        console.log(id + "" + target);
        Product.update(id, {
            $set: {'sellingPrice.M1': 10 },
        });
    },
});

仍然注意到,nada。

从'meteor / mongo'导入{Mongo}; 从'meteor / check'导入{check};

Months = new SimpleSchema({
    M0: {
        type: Number,
        autoValue: function() {
            return 0;
        },
        autoform: {
            type: "hidden"
        },
    },
    M1: {
        type: Number,
        autoValue: function() {
            return 0;
        },
        autoform: {
            type: "hidden"
        },
    },
    M2: {
        type: Number,
        autoValue: function() {
            return 0;
        },
        autoform: {
            type: "hidden"
        }

    },
    M3: {
        type: Number,
        autoValue: function() {
            return 0;
        },
        autoform: {
            type: "hidden"
        }

    },
    M4: {
        type: Number,
        autoValue: function() {
            return 0;
        },
        autoform: {
            type: "hidden"
        }

    },
    M5: {
        type: Number,
        autoValue: function() {
            return 0;
        },
        autoform: {
            type: "hidden"
        }

    },
    M6: {
        type: Number,
        autoValue: function() {
            return 0;
        },
        autoform: {
            type: "hidden"
        }

    },
    M7: {
        type: Number,
        autoValue: function() {
            return 0;
        },
        autoform: {
            type: "hidden"
        }

    },
    M8: {
        type: Number,
        autoValue: function() {
            return 0;
        },
        autoform: {
            type: "hidden"
        }

    },
    M9: {
        type: Number,
        autoValue: function() {
            return 0;
        },
        autoform: {
            type: "hidden"
        }

    },
    M10: {
        type: Number,
        autoValue: function() {
            return 0;
        },
        autoform: {
            type: "hidden"
        }

    },
    M11: {
        type: Number,
        autoValue: function() {
            return 0;
        },
        autoform: {
            type: "hidden"
        }

    },

});

所以任何帮助都会非常感谢

2 个答案:

答案 0 :(得分:0)

当您说sellPrice的数据类型为Months时,您说您将存储其他类型为Months的对象的ID。

如果您已将月份存储在其他收藏中,则必须以某种方式获取该月份的ID。但是,如果您不需要存储月份,则可以将Month声明为具有属性的对象。 https://github.com/aldeed/meteor-simple-schema#schema-keys

此外,您可以使用Autoform并声明月份的架构,并使用quickForm,您将拥有开箱即用的插入和编辑操作。

答案 1 :(得分:0)

根据我在autoValue docs上看到的情况,我相信您因为使用而无法更新一个月:

autoValue: function() {
        return 0;
}
关于架构的

。这总是在更新时将值更改为0.

所以你可以尝试删除它,看它是否有效。

如果您想要默认值,可以使用defaultValue