Javascript Mongoose中toObject.transform中缺少字段\u id
我正在Javascript Mongoose中toObject.transform中缺少字段\u id,javascript,node.js,mongodb,mongoose,mongoose-schema,Javascript,Node.js,Mongodb,Mongoose,Mongoose Schema,我正在mongoose中使用schema.toObject.transform 我的模式非常简单 const nodeSchema = new Schema({ }, { toObject: { transform: function (doc, ret) { return { myId: ret._id, }; } } }); const Node = mongoose.model('Node', nodeSchema); 我
mongoose
中使用schema.toObject.transform
我的模式非常简单
const nodeSchema = new Schema({
}, {
toObject: {
transform: function (doc, ret) {
return {
myId: ret._id,
};
}
}
});
const Node = mongoose.model('Node', nodeSchema);
我将此schema
推送到具有schema的父模型
const graphSchema = new Schema({
nodes: [nodeSchema]
});
使用mongoose
语法
const node = new Node({});
Graph.findByIdAndUpdate(graphId, {
$addToSet: {
nodes: node
}
}, (err, graph) => {
console.log(node.toObject());
});
当我这样做时,对象被正确地转换为自动生成的id,因为我直接引用const node=new node({})
问题是当我试图用
Graph.findById(graphId, (err, graph) => {
console.log(graph.nodes.map(node => node.toObject()));
});
现在我将无法获取自动生成的id
我通过调用node.toObject()
执行了完全相同的操作,但是当我使用$addToSet
时,\u id
中自动生成的id似乎已从节点
对象中删除
我还尝试了变换函数中的doc.\u id
而不是ret.\u id
,但它没有改变任何东西
我猜可能是错误的,我可能误解了toObject()
的作用。每次我在数组中运行它时都会自动调用它吗
我只想以一种方式(特定结构)在集合中存储我的值,但以另一种方式(另一种不同结构)显示它。所以我想我可以使用
transform
来选择要打印它的结构。当您使用console.log(node.toObject())代码>您指的是一个尚未命中Mongo db的对象;你确定这就是你想要证明的吗?是的。因为通过调用new Node()
,它已经创建了一个id,因此该对象与在数据库中创建的对象相同。为清晰起见,将记录节点与图形回调分开,并在console.log(Node.toObject())时发布这两个Node.toObject()
s的输出可能会很有用代码>您指的是一个尚未命中Mongo db的对象;你确定这就是你想要证明的吗?是的。因为通过调用new Node()
,它已经创建了一个id,因此该对象与在数据库中创建的对象相同。为清晰起见,将记录节点与图形回调分开,并发布两个Node.toObject()
s的输出可能会很有用。