Mongoose Schema 中的 JSON 中的 JS 数组

Posted

技术标签:

【中文标题】Mongoose Schema 中的 JSON 中的 JS 数组【英文标题】:JS Array in JSON by Mongoose Schema 【发布时间】:2017-10-17 06:59:49 【问题描述】:

我无法访问数组中的数组的问题。这是我的 Mongoose 架构:

const newSchema = mongoose.Schema(
    email            : String,
    name              : String,
    array : [Number]
)

这是我放入数组的数据:


  "array": [
    -11,
    "10,10,0",
    "1"
  ]
 

现在我正在尝试像这样更新第二行中的值“10”:

newAccount.array[3,0] = parseInt(someVariable)

或者像这样

newAccount.array[3][0] = parseInt(someVariable)

但值在任何情况下都不会改变。如何正确更改?

【问题讨论】:

您的架构有一个 Number 类型的数组,但您的数据中有字符串。另外,您是否尝试在“10,10,0”中更新“10”? ...这是一个字符串而不是数组 你能展示一个有效的 JSON 记录吗? 【参考方案1】:

这是解决您的问题的快速而肮脏的解决方案:

var obj = 
    array: [
        -11,
        '10,0,0',
        12
    ]

// splitting by ',' char
const newArray = obj.array[1].split(',')
// enter your new variable here.
newArray[0] = parseInt(someVariable);
// join them together so that we have the old structure back.
obj.array[1] = newArray.join(',');

console.log(obj);

更好的方法是以这种方式重组您的数据扩充,即您没有混合类型。

以及结果:

【讨论】:

以上是关于Mongoose Schema 中的 JSON 中的 JS 数组的主要内容,如果未能解决你的问题,请参考以下文章

从 mongoose 实体解析 JSON

从另一个 mongoose.Schema 调用 mongoose.Schema 中的静态

如何使用 Mongoose 在 MongoDB 中插入 JSON 数组

如何在 Mongoose Schema 中的嵌套对象中需要元素

mongoose Schema 中的字段可以都有哪些选项?

MongoDb - 要创建一个新的ObjectId,请尝试`Mongoose.Types.ObjectId`而不是使用`Mongoose.Schema.ObjectId`