我点击提交按钮后快速成型,此方法被解雇
submitPost: function (app) {
check(app, {
title: String,
description: String,
category: String,
price: Number
});
var knownId = Products.insert(app);
Products.update({ _id: knownId }, { $set:{screenShots: scs, previewImage: pi, sourceCode: zip }});
}
当我没有提供" screenShots,previewImage和sourceCode"时,提交按钮不起作用。集合中的默认值。
我给他们一个默认值,如下图所示
previewImage: {
type: String,
defaultValue: "jjj",
},
sourceCode: {
type: String,
defaultValue: "jjj",
},
screenShots: {
type: [String],
autoValue: function() {
return [];
}
},
现在表单中的提交按钮正在运行,并且触发了更新方法。它更新" previewImage和sourcCode"但是" screenShots"仍然是空的。
我不确定,但我相信问题与autoValue有关,我应该把它作为一个默认值,但是我如何给一个字符串数组的元素一个默认值呢?
或问题与其他问题有关?
答案 0 :(得分:1)
autoValue选项由SimpleSchema包提供,并在那里记录。 Collection2为任何作为C2数据库操作的一部分调用的autoValue函数添加以下属性:
因此,如果您想在更新时提供autoValue,则必须在您的架构中使用isUpdate。
createdAt: {
type: Date,
autoValue: function() {
if (this.isInsert) {
return new Date();
} else if (this.isUpsert) {
return {$setOnInsert: new Date()};
} else {
this.unset(); // Prevent user from supplying their own value
}
}
},
所以你的架构将是这样的:
previewImage: {
type: String,
defaultValue: function() {
if (this.isInsert) {
return 'fff';
} else if (this.isUpdate) {
return 'fff';
}
},
sourceCode: {
type: String,
defaultValue:function() {
if (this.isInsert) {
return 'jjj';
} else if (this.isUpdate) {
return 'jjj';
}
},
screenShots: {
type: [String],
autoValue: function() {
if (this.isInsert) {
return [];
} else if (this.isUpdate) {
return [];
}
}
},
有关详细信息,请查看this
答案 1 :(得分:1)
optional: true
,并且如果它是空的,它将通过检查。