【问题标题】:validate subDocuments in a dictionary in Mongoose在 Mongoose 的字典中验证子文档
【发布时间】:2016-03-14 21:40:15
【问题描述】:

我有一个userTasteSchema,有一个字典字段favoritesfavoriteSchema 对象。当我保存或更新userTaste 时,我想验证字典的元素是否是有效的favorite 对象。 可能吗? 谢谢

   var userTasteSchema  = new Schema(
        {  
          favorites     : {type: { /* dictionary of favorites */ }, default:{} }
         });

   var favoriteSchema = new Schema(
      {
       name : {type:{String}}
       });

【问题讨论】:

    标签: mongodb mongoose mongoose-schema


    【解决方案1】:

    您必须更改模型声明。根据docs,您的代码应如下所示:

    var userTasteSchema  = new Schema(
        {  
          favorites     : [ favoriteSchema ]
         });
    
    var favoriteSchema = new Schema(
      {
       name : {type:String}
       });
    

    差不多就是这样。当您保存父文档 UserTaste 时,您的子验证也会运行。这是reference

    验证是异步递归的;当你调用 Model#save 时, 子文档验证也被执行。如果发生错误,您的 Model#save 回调接收到它

    【讨论】:

    • 但是这样,我创建的是一个数组,而不是字典...不是吗?
    • 如果你想要一对多的子文档关系,你应该创建一个数组,无论如何如果你想要一个对象,你可以只传递一个对象,不带方括号的子模式(从版本 4.2 .0)
    猜你喜欢
    • 2014-09-15
    • 2019-06-03
    • 2014-08-27
    • 2015-09-30
    • 2018-10-31
    • 2018-04-15
    • 2020-05-22
    • 2012-09-11
    • 1970-01-01
    相关资源
    最近更新 更多