【问题标题】:Why am I unable to spread an object in my mongoose model?为什么我无法在我的猫鼬模型中传播对象?
【发布时间】:2018-02-23 04:54:15
【问题描述】:

这可能是一个愚蠢的问题,但到底为什么我会收到以下代码 sn-p 的“意外令牌”错误?请记住,这是一个猫鼬模型。

错误信息

SyntaxError: D:/Coding/Species Project/backend/models/species.js: Unexpected token (15:2)
  13 |  },
  14 |  organism: {
> 15 |          ...shared,
     |          ^
  16 |          enum: ["Plant", "Animal", "Other"],
  17 |  },
  18 |  taxonomy: {

猫鼬模型

const shared = {
    type: String,
    required: true,
}

const SpeciesSchema = new Schema({
    name: {
        common: shared,
        scientific: shared,
    },
    organism: {
        ...shared,
        enum: ["Plant", "Animal", "Other"],
    },
    ...,
}

【问题讨论】:

  • 最后..., 是您实际代码的一部分,还是只是一个示例?另外,意外的令牌是什么?
  • 不,不是。我添加省略号只是为了暗示代码的延续。另外,我编辑了问题以包含错误消息。
  • 您的节点版本是否支持对对象使用 rest/spread 运算符?
  • @PatrickEvans 确实如此,这就是为什么它是一个相当出乎意料的结果。
  • 如果这是您的错误消息,我会仔细检查您的 Node 版本。看起来8.6.0 是第一个正确支持它的版本。你写的应该是有效的。

标签: javascript node.js mongodb mongoose mongoose-schema


【解决方案1】:

扩展运算符用作数组的参数。

您可能想改用它

const SpeciesSchema = new Schema({
    name: {
        common: shared,
        scientific: shared,
    },
    organism: Object.assign({}, shared, enum: ["Plant", "Animal", "Other"]},
    ...,
}

【讨论】:

  • 是的,Object.assign 有效。然而,它相当冗长,这是我一开始就希望避免的。
猜你喜欢
  • 2017-01-04
  • 2021-09-18
  • 1970-01-01
  • 2017-07-07
  • 1970-01-01
  • 2017-07-22
  • 2015-06-26
  • 2021-10-24
  • 2017-02-17
相关资源
最近更新 更多