THp*_*ubs 3 javascript mongoose mongodb
假设我们有一个像这样的错误对象:
const error = new Error('Error');
Run Code Online (Sandbox Code Playgroud)
我如何将它存储在 mongo 中?试图将其存储在类型为 Object 的字段中(甚至尝试过类型为 Mixed),但它只存储一个空的 Object。
const UserLogSchema = new Schema(
{
...
error: {
type: Schema.Types.Mixed
}
},
{
timestamps: true
}
);
const UserLog = mongoose.model('UserLog', UserLogSchema);
Run Code Online (Sandbox Code Playgroud)
添加错误:
const userLog = await UserLog.findOne({ _id: userLogID });
userLog.error = new Error('Error');
await userLog.save();
Run Code Online (Sandbox Code Playgroud)
当我们稍后尝试获取错误时:
const userLog = await UserLog.findOne({ _id: userLogID });
console.log(userLog.error)
Run Code Online (Sandbox Code Playgroud)
它只是打印{}. 但实际的错误不是空的。
序列化错误对象并存储为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"}
Run Code Online (Sandbox Code Playgroud)
在这里看到类似的问题,你也可以使用serialize-error包。