栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

模式内的猫鼬模式

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

模式内的猫鼬模式

有几种方法可以做到这一点。最简单的就是这样:

var TaskSchema = new Schema({    name : String,    lastPerformed   : Date,    folder          : String,    user : Schema.ObjectId});

然后,您只需确保您的应用程序正在编写该ID,并在查询中使用该ID即可根据需要提取“相关”数据。

按用户ID搜索任务很好,但按任务ID查询用户则比较麻烦:

// Get tasks with user idTask.find({user: user_id}, function(err, tasks) {...});// Get user from task idTask.findById(id, function(err, task) {  User.findById(task.user, function(err, user) {    // do stuff with user  }}

另一种方法是利用Mongoose的填充功能来简化查询。为此,您可以执行以下操作:

var UserSchema = new Schema({    name        : String,    app_key     : String,    app_secret  : String,    tasks       : [{type: Schema.ObjectId, ref: 'Task'}] // assuming you name your model Task});var TaskSchema = new Schema({    name : String,    lastPerformed   : Date,    folder          : String,    user : {type: Schema.ObjectId, ref: 'User'} // assuming you name your model User});

这样,您对所有用户(包括他们的任务数组)的查询可能是:

User.find({}).populate('tasks').run(function(err, users) {  // do something});

当然,这意味着在两个位置都保留id。如果让您感到困扰,那么最好坚持第一种方法,并习惯于编写更复杂(但仍然足够简单)的查询。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/448527.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号