大家好,我可以告诉我为什么我不能更新我的子文件。我可以更新普通文档字段,但不能更新我在此处硬编码的方法的子文档,只是为了让它能够工作。
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"
}
},
});
所以任何帮助都会非常感谢
答案 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