【发布时间】:2023-04-11 03:53:01
【问题描述】:
我在 mongoose 中定义了一个三重嵌套数组。当我尝试使用 2 级深空数组对其进行初始化时,它会添加第三级。见以下代码:
import mongoose, { Schema } from 'mongoose';
const foos = mongoose.model(`FooModel`, new Schema({ numbers: [[[Number]]] }));
const oneFoo = await foos.create({ numbers: [[]] });
console.log(oneFoo.numbers);
Expected: [[]], Actual: [[[]]]
有趣的是,2 级深度数组不会发生这种情况:
const foos = mongoose.model(`FooModel`, new Schema({ numbers: [[Number]] }));
const oneFoo = await foos.create({ numbers: [] });
console.log(oneFoo.numbers);
Expected: [], Actual: []
关于为什么这不起作用的任何想法,是否有任何解决方法?
版本:
"mongodb": "3.5.4",
"mongoose": "5.9.22",
编辑:这是5.9.23 中修复的错误:
【问题讨论】:
-
您是否尝试过使用第二种情况的单个空数组或添加一些值?以防万一
-
添加值确实有效,但我真的想将
[[]]保存在数据库中,而不是别的。 -
你确定不应该是
[]吗?[[]]对于空值看起来有点奇怪,即使它应该有 3 个级别 -
嗯,其实是
[[], [], [], [], [], [], []](代表一周)转化为[[[], [], [], [], [], [], []]],不太一样! -
我明白了,但我不明白为什么当这些空数组不携带任何信息时,你会在数组中需要这些空数组。看起来它应该在后端的某个地方在返回之前提供默认的空值,或者如果某些代码需要这些空数组,则在 Schema 中作为默认返回值。
标签: javascript node.js mongodb mongoose mongoose-schema