【问题标题】:Mongoose - Array being saved as stringMongoose - 数组被保存为字符串
【发布时间】:2021-04-20 18:45:19
【问题描述】:

在我的模式文件中,我试图将 type 属性设置为数组。如此处所示

import mongoose from "mongoose";

const model = mongoose.Schema({
    _id : mongoose.Schema.Types.ObjectId,
    "type" : Array,
})

export const Stocks = mongoose.model("stocks", model)

尽管出于某种原因,当我尝试保存文档时,它会将文档保存为字符串,即使它是数组中的一个元素,它仍然返回一个字符串。这是我保存文档的代码;

export async function sendStock(data) {
    if (!data) throw new Error("Missing Stock API Data")

    let stock = {
        _id: mongoose.Types.ObjectId(),
        "type": [ data["put_call"] ],
    }

    Stocks.findOne({"ticker": stock.ticker}, (err, res) => {
        if (!res) return new Stocks(stock).save();
  })
}

这是在网站上查看的猫鼬模式 https://i.stack.imgur.com/TACoo.png

我在 mongoose 方面不是最擅长的,但是,我确定有些事情发生了,但我没有将文档保存到其他任何地方,但仍然保存了一个字符串。

【问题讨论】:

  • 在架构中声明变量时尝试使用 [String] 而不是 Array。即类型:[String]
  • 你试过用 mongoose.Schema.Types.Array 替换模型中的 Array

标签: node.js mongodb mongoose


【解决方案1】:

你的模型应该是这样的

import mongoose from "mongoose";

const model = mongoose.Schema({
    _id : mongoose.Schema.Types.ObjectId,
    type : [String], //<=== I'm assuming you are receiving string array
})

export const Stocks = mongoose.model("stocks", model)

此外,您可能希望格式化您保存的值,就​​好像它不是以 array 的形式出现一样,它会失败。

【讨论】:

  • 我遇到了同样的错误。另外,你能解释一下格式吗?
  • 你添加数据的方式[ data["put_call"] ]很奇怪。
【解决方案2】:

试试这个:

import mongoose from "mongoose";

const model = mongoose.Schema({
    _id : mongoose.Schema.Types.ObjectId,
    type : { type: []},
})

export const Stocks = mongoose.model("stocks", model)

【讨论】:

    猜你喜欢
    • 2016-06-01
    • 2015-08-20
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多