2016-03-08 53 views
2

我有quickform一旦提交按鈕點擊,這種方法被觸發如何將默認值設置爲類型[String]的集合中的元素?

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 }}); 

    } 

提交按鈕不工作時,我並沒有給「截屏,previewImage和源代碼」集合中默認值。

一旦我給他們的默認值就像如下所示

previewImage: { 
    type: String, 
    defaultValue: "jjj", 
    }, 
    sourceCode: { 
    type: String, 
    defaultValue: "jjj", 
    }, 
    screenShots: { 
    type: [String], 
    autoValue: function() { 
     return []; 
    } 
    }, 

現在的形式提交按鈕是否工作正常,更新方法被觸發。它會同時更新「previewImage和sourcCode」,但「screenShots」仍然是空的。

我不確定,但我相信問題與autoValue,我應該使它成爲一個默認值,但我如何給一個元素類型的字符串數組的默認值?

或者問題與其他事情有關?

+0

我可以知道您用於模式設計的包嗎? –

+0

@PankajJatav aldeed/meteor-collection2包如果我明白你的問題對 –

回答

1

使用optional: true在架構中如果值是可選的,它會通過檢查它是空的。

+0

哦,是啊,沒想到這個解決方案,非常感謝 –

1

autoValue選項由SimpleSchema包提供,並在那裏記錄。 Collection2添加以下屬性這對於被稱爲一個C2數據庫操作的一部分的任何autoValue功能:

  • isInsert:如果它是一個插入操作
  • isUpdate:如果它是一個更新操作
  • isUpsert:如果它是一個更新插入操作(無論是UPSERT()或UPSERT:真)

所以,如果你想提供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

相關問題