node.js - 使用代码中创建的 id 保存实体,猫鼬
问题描述
如何从外部传递文档的 id 而不是 mongoose 生成它?我需要用我告诉他们的 id 来存储对象,但是 mongoose 会覆盖它并用他想要的那个来保存它。我现在尝试了几种方法,但没有任何反应。
它是我通过多个数据库中的事件分发的实体,因此我需要将它与我想保持数据完整性的 id 一起存储。
现在我有了这个,上面写着“文档在保存之前必须有一个 _id”,但是我已经放了它的 id 无法识别它。方案是这样的:
const schema = new Schema({
_id: { type: String },
name : { type: String },
});
我也试过这个,错误是一样的:
const schema = new Schema({
_id: { type : String },
name : { type: String },
},
{
_id: false
});
我正在传递这样的对象:
Item.create({ _id: 'my uuid here', name: 'something' });
但是当它被保存时,它仍然是由 mongoose 生成的 id 替换我的,也就是说,它用 _id 将它更改为我:'5twt563e3j5i34knrwnt43w'
解决方案
你的语法应该可以工作,但有时猫鼬的行为很奇怪。
您可以尝试这种语法(适用于我的项目):
const item = new Item({ name: 'something' });
item._id = 'my uuid here';
await item.save();
推荐阅读
- node.js - 如何在反应本机android应用程序中隐藏api url?
- python - 复制修改的Django项目剧照显示旧模板
- python - 在 Python 中使用 *args 时出现 TypeError
- angular - 使用@angular/cdk 拖放会给出错误的拖放事件数据
- python - Python中的下标unicode字符符号
- r - 当我使用 read html() 阅读网页时,不包含 HTML 节点
- javascript - javascript blob 中的换行符未呈现
- prometheus - Prometheus 仪表板未更新网站状态
- android - 自定义 ExoPlayer 控制功能
- java - 按名称中的日期对文件数组进行排序