猫鼬中的 [{type: String}] 和 {type: [String]} 有什么区别?

what is difference between [{type: String}] and {type: [String]} in mongoose?

我试图获取数据,如果没有为字段分配值,它就不应出现在集合中。

我试过这个:

const CollectionSchema = new Schema({
  field1: [{ type: String, default: undefined}],
});

OR

const CollectionSchema = new Schema({
  field1: [{ type: String, default: () => undefined}],
});

没有用,每当我尝试将其创建为空时,field1:[] 就会出现。

但是这段代码起作用了。用于创建嵌套数组的两个给定片段有何区别,以便在未添加数据时不显示字段?

const CollectionSchema = new Schema({
  field1: { type: [String], default: () => undefined},
});

使用 [{ type: String, default: undefined}] 可以创建一个 field1 数组,其中包含字符串作为元素。如果没有值,则数组中将有未定义的元素。这就是它不起作用的原因。

换句话说,等效代码为:

const CollectionSchema = new Schema({
  field1: [fieldSchema],
});
const fieldSchema = new Schema({
  field : { type: String, default: undefined},
});

如您所见,field1 不会未定义。

使用 { type: [String], default: () => undefined} 您只需创建一个字符串数组。这就是它起作用的原因。