admin 管理员组文章数量: 1184232
将 JSON 加载到 mongoose 文档时解析 `$oid`
我正在为我的后端编写测试。我正在使用
mongoose.
为了避免从我的数据库中编写一个巨大的示例文档作为模拟,我将该文档复制粘贴到一个 JSON 文件中。
转储文档将
ObjectIds转换为:
"_id": {
"$oid": "6457a66965cfa04f2c2bf00f",
}
如果我将其加载到文档中,那么我的
_id 字段将只是通用对象,而不是 mongoose.Types.ObjectId
我也试过用我的模型加载它
const Model = mongoose.model("MyModel", schema);
export const document = new Model(
{
"_id": {
"$oid": "6457a66965cfa04f2c2bf00f"
}
});
但我得到了相同的结果。
我怎样才能让
mongoose解析$oid?
回答如下:
"_id": {
"$oid": "6457a66965cfa04f2c2bf00f",
}
是Canonical Modemongodb-extended-json
的JSON格式我猜你从 cloud mongodb 复制文档如下:
复制文件示例:
{ "_id": { "$oid": "6453682c4fd3563f4b9ccb0a" }, "username": "teresa teng", "email": "[email protected]", "password": "123456", "notes": [{ "_id": { "$oid": "6453682c4fd3563f4b9ccb0c" }, "title": "b", "text": "b-text", "createdAt": { "$date": { "$numberLong": "1683187756818" } }, "updatedAt": { "$date": { "$numberLong": "1683187756818" } } }], "createdAt": { "$date": { "$numberLong": "1683187756819" } }, "updatedAt": { "$date": { "$numberLong": "1683188038452" } }, "__v": { "$numberInt": "1" } }
现在,让我们从云 Mongodb 中删除这个用户文档,并使用上面的 mongodb 扩展 JSON 重新创建它。我将使用 bson 包的
EJSON.parse(text, [options])
解析扩展 JSON 字符串,构造该字符串描述的 JavaScript 值或对象。
当我们得到解析后的js对象,我们就可以用它来创建我们的用户文档了
例如
const copiedDocument = { "_id": { "$oid": "6453682c4fd3563f4b9ccb0a" }, "username": "teresa teng", "email": "[email protected]", "password": "123456", "notes": [{ "_id": { "$oid": "6453682c4fd3563f4b9ccb0c" }, "title": "b", "text": "b-text", "createdAt": { "$date": { "$numberLong": "1683187756818" } }, "updatedAt": { "$date": { "$numberLong": "1683187756818" } } }], "createdAt": { "$date": { "$numberLong": "1683187756819" } }, "updatedAt": { "$date": { "$numberLong": "1683188038452" } }, "__v": { "$numberInt": "1" } };
const obj = bson.EJSON.parse(JSON.stringify(copiedDocument));
console.log('obj: ', obj);
const user = new UserModel(obj)
await user.save();
执行结果:
obj: {
_id: new ObjectId("6453682c4fd3563f4b9ccb0a"),
username: 'teresa teng',
email: '[email protected]',
password: '123456',
notes: [
{
_id: new ObjectId("6453682c4fd3563f4b9ccb0c"),
title: 'b',
text: 'b-text',
createdAt: 2023-05-04T08:09:16.818Z,
updatedAt: 2023-05-04T08:09:16.818Z
}
],
createdAt: 2023-05-04T08:09:16.819Z,
updatedAt: 2023-05-04T08:13:58.452Z,
__v: 1
}
已成功重新创建用户文档。
本文标签: 将 JSON 加载到 mongoose 文档时解析 oid
版权声明:本文标题:将 JSON 加载到 mongoose 文档时解析 `$oid` 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.roclinux.cn/b/1717590208a709271.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论