【问题标题】:Mongoose won't let me insert null value for Number?Mongoose 不会让我为 Number 插入空值?
【发布时间】:2014-02-07 19:32:59
【问题描述】:

我定义了以下 Mongoose 架构:

participantSchema = new Schema({
  id: Number,
  email: String,
  survey: {
    type: Schema.Types.ObjectId,
    ref: 'Survey'
  },
  created: {
    type: Date,
    "default": Date.now
  },
  answers: [
    {
      question: {
        type: Schema.Types.ObjectId,
        ref: 'Question'
      },
      values: Array,
      question_id: Number,
      sub_id: Number
    }
  ]
});

当我尝试为我的 answers 数组插入以下值时:

[{ question_id: 60800,
  _id: 52f53345f06cf301f2a38465,
  values: [ 'c2' ] }
{ question_id: 60801,
  sub_id: 19690,
  _id: 52f53345f06cf301f2a38464,
  values: [ 'C1' ] }
{ question_id: 60801,
  sub_id: 19691,
  _id: 52f53345f06cf301f2a38463,
  values: [ 'C3' ] }
{ question_id: 60802,
  _id: 52f53345f06cf301f2a38462,
  values: [ null ] }
{ question_id: 60803,
  sub_id: 19692,
  _id: 52f53345f06cf301f2a38461,
  values: [ null ] }]

它抛出错误:

CastError: 路径“sub_id”处值“null”的数字转换失败

如果我将所有 sub_ids 硬编码为 1 或 null,它似乎可以工作,但是当有混合时它会抛出错误。有什么解决方法的建议吗?

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    这样做:

    sub_id: {type: Number, sparse: true}
    

    然后查看this

    【讨论】:

    • 设置索引是否“稀疏”?仅仅为了获得一个有效的号码插入是不是很糟糕? (很想知道)
    猜你喜欢
    • 2013-12-15
    • 2017-11-26
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    • 2014-09-16
    • 1970-01-01
    • 2017-02-07
    • 1970-01-01
    相关资源
    最近更新 更多