首先,我已经找到了一个修复方法,但我需要知道的是为什么会发生bug。在下面的两个示例MongoDB中,生成的文档分别具有相同的id和日期。
id: {
type: String,
required: true,
unique: true,
default: nanoid(),
immutable: true,
},dateCreated: {
type: Number,
required: true,
default: Date.now(),
immutable: true,
}在以下两个示例中,生成的每个文档都具有不同的id和创建日期
id: {
type: String,
required: true,
unique: true,
default: () => nanoid(),
immutable: true,
},dateCreated: {
type: Number,
required: true,
default: () => Date.now(),
immutable: true,
}我知道这与javascript中的值和引用有关,但我不能准确地指出为什么会发生这种情况。
发布于 2021-08-28 01:13:01
当您在对象中传递此参数时:
default: nanoid(),javascript解释器将首先执行nanoid()并将返回值分配给default字段。
这基本上与以下内容相同:
const newId = nanoid();
...
id: {
type: String,
required: true,
unique: true,
default: newId
immutable: true,
},这实际上是将默认值设置为静态值。
请注意,通过不包含(),您可能可以获得所需的行为,例如
id: {
type: String,
required: true,
unique: true,
default: nanoid,
immutable: true,
},https://stackoverflow.com/questions/68959108
复制相似问题