gpt4 book ai didi

node.js - 为什么我似乎无法将普通对象合并到 Mongo Document 中?

转载 作者:太空宇宙 更新时间:2023-11-04 00:54:40 25 4
gpt4 key购买 nike

我有来自第 3 方服务器的数据源,我正在提取该数据并将其转换为 JSON。数据源中永远不会包含我的 mongoDB 自动生成的 _id,但有一个名为 vehicle_id 的唯一标识符。

下面的函数负责处理获取数据源生成的 json 对象 fresh_event_obj 并将其值复制到 mongo 文档中(如果存在具有相同 vehicle_id 的 mongo 文档) >。

function update_vehicle(fresh_event_obj) {
console.log("Updating Vehicle " + fresh_event_obj.vehicleID + "...");

Vehicle.find({ vehicleID: fresh_event_obj.vehicleID }, function (err, event_obj) {
if (err) {
handle_error(err);
} else {
var updated = _.merge(event_obj[0], fresh_event_obj);

updated.save(function (err) {
if (err) {
handle_error(err)
} else {
console.log("Vehicle Updated");
}
});

}
});
}

event_obj[0]fresh_event_obj 的结构相同,只是 event_obj[0] 具有 _id__v 而“普通”对象则不然。

当我在这两个上运行 _.merge 时,甚至是我自己的递归函数(仅将值从后者复制到前者)时,updated 对象中没有任何内容与 event_obj 不同[0],尽管 fresh_event_obj 具有所有新值。

有人知道我做错了什么吗?我觉得这是显而易见的,只是我看不到而已。

最佳答案

问题是,如果您的架构中没有定义属性,并且它们尚不存在,则无法使用

创建它们
doc.prop = value

即使您的架构中有 {strict:false}

设置新属性的唯一方法是执行

doc.set('prop', value)

(如果您的架构中不存在该属性,您的架构中仍然必须有 {strict:false})

对于架构中需要定义的属性太多,您始终可以使用 for-in 循环来遍历对象属性

for(key in fresh_event_obj)
event_obj.set(key, fresh_event_obj[key]);

关于node.js - 为什么我似乎无法将普通对象合并到 Mongo Document 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30565370/

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