如何将一个架构添加到另一个架构?这似乎是无效的:
var UserSchema = new Schema({
name : String,
app_key : String,
app_secret : String
})
var TaskSchema = new Schema({
name : String,
lastPerformed : Date,
folder : String,
user : UserSchema
})
字符串
我检查了网站,它显示了如何声明它的数组,但不是单一的。
谢啦,谢啦
4条答案
按热度按时间k5ifujac1#
有几种方法可以做到这一点。最简单的就是这个:
字符串
然后,你只需要确保你的应用程序正在编写这个id,并在查询中使用它来获取必要的“相关”数据。
这在按用户ID搜索任务时很好,但在按任务ID查询用户时会比较麻烦:
型
另一种方法是利用Mongoose的populate特性来简化查询。要实现这一点,您可以执行以下操作:
型
这样,您对所有用户(包括其任务数组)的查询可能是:
型
当然,这意味着在这两个地方都要维护id。如果这让您感到困扰,那么最好坚持使用第一种方法,并且习惯于编写更复杂(但仍然足够简单)的查询。
2ekbmq322#
从版本4.2.0开始,mongoose支持单个子文档。
the docs:
字符串
bybem2ql3#
那么这个简单的解决方案呢?
字符串
aiqt4smr4#
字符串
**ref:'User'**属性表示用户字段引用User模型。保存任务文档时,需要提供现有用户文档的_id(ObjectId),以将任务链接到相应的用户。