gpt4 book ai didi

node.js - 获取 CoreMongooseArray 而不是普通数组

转载 作者:可可西里 更新时间:2023-11-01 09:25:33 25 4
gpt4 key购买 nike

我有这个架构:

var orderSchema = new mongoose.Schema({
history: [{
"type": {
type: String,
enum: [
'ORDER_HISTORY_DRIVER_DETAILS',
'ORDER_HISTORY_LOADING',
'ORDER_HISTORY_LOCATION',
'ORDER_HISTORY_UNLOADING'
],
required: true
},
date: {
type: Date
},
state: {
type: String,
enum: [
'ORDER_HISTORY_STEP_STATE_COMPLETED',
'ORDER_HISTORY_STEP_STATE_CURRENT',
'ORDER_HISTORY_STEP_STATE_FUTURE',
],
default: 'ORDER_HISTORY_STEP_STATE_FUTURE',
required: true
}
}]
})

有一次,我需要删除类型为“ORDER_HISTORY_LOCATION”的所有子文档,因此我正在运行:

let result = await Order.findOneAndUpdate(
{orderId: req.params.orderId},
{
$pull: {
history: {type: "ORDER_HISTORY_LOCATION"}
}
}, {new: true}
);

当我记录“result.history”时,我得到这个:

CoreMongooseArray [
{ state: 'ORDER_HISTORY_STEP_STATE_CURRENT',
_id: 5caf8a41641e6717d835483d,
type: 'ORDER_HISTORY_DRIVER_DETAILS' },
{ state: 'ORDER_HISTORY_STEP_STATE_FUTURE',
_id: 5caf8a41641e6717d835483c,
type: 'ORDER_HISTORY_LOADING',
date: 2019-05-08T09:00:00.000Z },
{ state: 'ORDER_HISTORY_STEP_STATE_FUTURE',
_id: 5caf8a41641e6717d835483b,
type: 'ORDER_HISTORY_LOADING',
date: 2019-05-09T09:00:00.000Z },
{ state: 'ORDER_HISTORY_STEP_STATE_FUTURE',
_id: 5caf8a41641e6717d8354837,
type: 'ORDER_HISTORY_UNLOADING',
date: 2019-05-13T09:00:00.000Z } ]

这个“CoreMongooseArray”是什么?我对它无能为力。我也找不到任何关于它的文档。

最佳答案

CoreMongooseArray 似乎继承了 Array 类型并且具有几乎相同的行为。

源代码(撰写本文时):https://github.com/Automattic/mongoose/blob/3e523631daa48a910b5335c747b3e5d080966e6d/lib/types/core_array.js

如果你想把它转换成一个简单的数组,就这样做:

const history = Array.from(...result.history)

请注意,如果此数组包含对象,则每个对象都将具有不需要的额外 Mongoose 属性,因为它们是 Mongoose 模式文档。您需要将它们转换为纯 JavaScript 对象:

const history = Array.from(...result.history).map(v => v.toJSON())

希望对您有所帮助。

关于node.js - 获取 CoreMongooseArray 而不是普通数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55639636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com