2016-04-26 118 views
2

我有一個貓鼬模型,看起來是這樣的:貓鼬使陣列所需

var ProjectSchema = new Schema({ 
    name: { type: String, required: true }, 
    tags: [{ type: String, required: true }] 
}); 

我想這需要一個項目,至少有一個標籤。然而,當我保存一個新的項目沒有標籤陣列,貓鼬不會引發錯誤:

var project = new Project({'name': 'Some name'}); 
project.save(function(err, result) { 
    // No error here... 
}); 

缺少什麼我在這裏?我如何指定一個需要的數組?

回答

6

的一行是:

tags: {type: [String], required: true}

SchemaTypes

+0

不錯,只是試了一下。不知道它是這樣工作的。謝謝。 – benjiman

+1

@benjiman應該知道,只要這些條目可以被Mongoose轉換爲'String',它就會很高興地接受'tags'中的非String條目(它會被我的答案中的代碼捕獲)。 – robertklep

2

據我所知,您需要設置typeArray並添加自定義驗證,以確保每個條目是String

tags : { 
    type  : Array, 
    required : true, 
    validate : { 
    validator : function(array) { 
     return array.every((v) => typeof v === 'string'); 
    } 
    } 
} 
+0

完美地工作。謝謝:-) – benjiman