【问题标题】:Mongoose doesn't save array with mixed typeMongoose 不保存混合类型的数组
【发布时间】:2020-02-12 03:44:34
【问题描述】:

我必须定义一个errorMessages 子文档来保存一个混合类型的数组吗? (当我必须在该子文档的数组中混合类型时,我该怎么做)

仅使用数组会导致看不到任何错误消息,只有一个空数组可见。使用mongoose.Mixed 作为类型会导致显示字符串错误,但会忽略错误对象。

我对如何实现这一点有点困惑

我的架构

保存前我的文档

保存后我的文档

代码


// document is APIATicket
// error is either a string or an Error Object that has been created with new Error()
document.errorMessages.push(error);
document.save();

// other "normal" objects (created with object literals) result in the same behavior
const myObject = {msg: "Hello world"};
document.payload = myObject;
document.save();

【问题讨论】:

  • 显示您的代码。
  • @Mr.Gandhi 已编辑
  • 有什么问题?在您保存的对象中,errorMessages 已填充?
  • @japrescott errorMessages 正确保存了类型为string 的错误。 errorMessages 数组中 object 类型的条目不会被保存。只保存了一个空对象(如第三张图所示,一切都扩大到最大)
  • @Twiggeh 确保在您的错误对象上编写了一个 toString 和 toJSON 函数,该函数返回一个代表您的错误的字符串

标签: javascript node.js mongoose


【解决方案1】:
  1. 不需要使用[Object],因为它等同于[],它是Mixed SchemaType的数组。

  2. Mongoose 不会(或至少在我的情况下)保存默认节点错误,这些错误是使用 const nodeError = new Error("Error Message") 创建的,但如果将错误解构为新对象 const newObject = {message: nodeError.message, stack: nodeError.stack}newObject推送到errorMessages数组,会按预期保存!

【讨论】:

    猜你喜欢
    • 2022-08-23
    • 1970-01-01
    • 2014-04-28
    • 2016-07-27
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    • 1970-01-01
    相关资源
    最近更新 更多