javascript - 如何用 mongoose 存储 javascript 错误对象?

标签 javascript mongodb mongoose

假设我们有一个这样的错误对象:

const error = new Error('Error');

如何将其存储在 mongo 中?试图将它存储在一个对象类型的字段中(甚至尝试了混合类型)但它只存储了一个空对象。

const UserLogSchema = new Schema(
  {
    ...
    error: {
      type: Schema.Types.Mixed
    }
  },
  {
    timestamps: true
  }
);

const UserLog = mongoose.model('UserLog', UserLogSchema);

添加错误:

const userLog = await UserLog.findOne({ _id: userLogID });

userLog.error = new Error('Error');

await userLog.save();

当我们稍后尝试获取错误时:

const userLog = await UserLog.findOne({ _id: userLogID });

console.log(userLog.error)

它只打印 {}。但实际错误并不为空。

最佳答案

序列化错误对象并存储为 json 字符串是否足够的解决方案?

error = new Error('ahhhh');
errorJson = JSON.stringify(error, Object.getOwnPropertyNames(error));
console.log(errorJson);
// output: {"stack":"Error: ahhhh\n    at <anonymous>:1:7","message":"ahhhh"}

参见类似问题 here , 你也可以使用 serialize-error包。

关于javascript - 如何用 mongoose 存储 javascript 错误对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49870976/

相关文章:

c# - Mongodb c# 驱动程序查询(选择子字段)

node.js - 从匹配属性的数组中获取所有结果

node.js - NodeJS 和 Mongo - 多个用户同时发送请求时的意外行为

Javascript函数返回总是未定义

javascript - mouseover mouseout JQuery 时自动播放/暂停

javascript - MongoDB 投影将子对象作为列返回

javascript - 从注册表中读取键值

javascript - Angular2 管道中的新关键字

json - 在文档中查找数组中的元素

使用 C 和 BSON 计算 Mongo 游标中的文档。