从来自 mongodb 的对象中删除 _id 不起作用
Deleting _id from object coming from mongodb doesn't work
我正在使用 graphql 从 mongodb 数据库中获取一些数据。因此,我正在制作一个 api,它在 运行 上将数据保存在主集合中,但也会将数据保存在其他一些集合中以及更多数据。我试图从保存在主集合上的数据中删除 _id
,但它不起作用,我不知道为什么。
这是正在发生的事情
const data = await User.getResolver('updateById').resolve({ //default resolver from graphql-compose library to update a record. Returns the whole document in record //
args: {...rp.args}
})
const version = '4'
const NewObject = _.cloneDeep(data.record);
NewObject.version = version;
NewObject.oldId = data._id;
_.unset(NewObject, '_id'); //this doesn't work neither does delete NewObject._id//
console.log('new obj is', NewObject, version, NewObject._id, _.unset(NewObject, '_id')); //prints _id and surprisingly the unset in console.log is returning true that means it is successfully deleting the property//
我很困惑我做错了什么。
编辑:抱歉应该提到了,但是根据lodash docs _.unset
returns true
如果它成功删除了一个属性.
原来 mongoDb 使 _id
成为不可配置的 属性。因此,为此,我必须使用 toObject()
方法制作对象的可编辑副本。
const NewObject = _.cloneDeep(data.record).toObject();
有了这个我就可以删除 _id
。
另外,lodash 的 _.omit 也可以。
我正在使用 graphql 从 mongodb 数据库中获取一些数据。因此,我正在制作一个 api,它在 运行 上将数据保存在主集合中,但也会将数据保存在其他一些集合中以及更多数据。我试图从保存在主集合上的数据中删除 _id
,但它不起作用,我不知道为什么。
这是正在发生的事情
const data = await User.getResolver('updateById').resolve({ //default resolver from graphql-compose library to update a record. Returns the whole document in record //
args: {...rp.args}
})
const version = '4'
const NewObject = _.cloneDeep(data.record);
NewObject.version = version;
NewObject.oldId = data._id;
_.unset(NewObject, '_id'); //this doesn't work neither does delete NewObject._id//
console.log('new obj is', NewObject, version, NewObject._id, _.unset(NewObject, '_id')); //prints _id and surprisingly the unset in console.log is returning true that means it is successfully deleting the property//
我很困惑我做错了什么。
编辑:抱歉应该提到了,但是根据lodash docs _.unset
returns true
如果它成功删除了一个属性.
原来 mongoDb 使 _id
成为不可配置的 属性。因此,为此,我必须使用 toObject()
方法制作对象的可编辑副本。
const NewObject = _.cloneDeep(data.record).toObject();
有了这个我就可以删除 _id
。
另外,lodash 的 _.omit 也可以。