node.js - Mongoose:使用“1”作为 Schema.Types.ObjectId 的值创建模型
问题描述
我试图做的是以下,我将我的模型定义为:
const channelSchema= new Schema({
name:{type: String},
country_id:{type: Schema.Types.ObjectId, ref: 'country'}
})
和
const countrySchema = new Schema({
_id{ type : Number }
name: { type: String },
gmt: { type: String }
})
现在,当我创建一个新的 countrySchema 时,我使用个性化的“_id”,例如 1 或 2,总是一个数字等等,这是以 0 个错误创建的。我的问题是当我尝试创建一个新的频道模式时,使用
country_id = "1"
或者
country_id = 1
我得到错误:
'Cast to ObjectID failed for value "1" at path "country_id"'
我从猫鼬文档中读到的,ObjectId 是用 12 字节创建的(默认情况下)。我的问题是:有没有办法避免必须使用 12 字节密钥,并使用“1”作为 ObjectId,以便我可以用国家/地区填充频道?
重要提示:我正在使用 Node.Js、猫鼬和 express
解决方案
如果要引用关系,需要在关系的两边设置相同的类型。在这种情况_id
下country
被声明为Number
,所以country_id
也应该Number
是
country_id: { type: Number, ref: 'country' }
推荐阅读
- c++ - 后继的有效按位反转
- javascript - 带有持续时间插件的 DayJS 格式在传递日、小时和分钟时返回未定义
- flutter - 应用程序通过热重载更新,但在按下按钮时不正确
- google-bigquery - 将行转置为 bigquery 中的列
- google-sheets - 一些帮助删除没有输出标题的查询中的重复项
- react-bootstrap - 向下滑动时,react-bootstrap Tab.Pane 在移动设备上恢复为 defaultActiveKey
- python - 如何在基于文本的游戏中创建*工作*保存/加载系统?
- excel - 刷新导致 ActiveSheet.Copy 失败
- javascript - 跟踪 X 时间的值
- javascript - 网络 API。如何使用 req.body 将数据存储在 MongoDB Altlas 中的数组中?