文档章节

mongoose 使用populate 需要注意的问题

造化玉碟
 造化玉碟
发布于 2014/06/24 16:04
字数 351
阅读 7058
收藏 2

    So far we've created two Models. Our Person model has it's stories field set to an array of ObjectIds. The refoption is what tells Mongoose which model to use during population, in our case the Story model. All _ids we store here must be document _ids from the Story model. We also declared the Story _creator property as aNumber, the same type as the _id used in the personSchema. It is important to match the type of _id to the type of ref.

    Note: ObjectId, Number, String, and Buffer are valid for use as refs

    今天在使用mongoose的populate来查询ref的文档,一直查不到,花了整整一天时间了,只怪没有看完上面的描述。

   1.  在文档关联使用ref一定要注意,关联的那个model只能匹配_id这个字段,你要是搞个自动生成的啥的一概无效。列举一下吧:

var _User = new Schema({
    _id:Number,// 只支持ObjectId,Number,String,Buffer,就这几个引用类型,ref匹配的只有这个_id
    name:String,
    age:Number
});

var _Comment = new Schema({
    comments:[{
        text:String,
        created_by:{type:Number,ref:'User'}//这个User是model名称,数据类型要于_id的数据类型一致。
    }]
})

var userModel = mongoose.model('User',_User);
var commentsModel = mongoose.model('Comment',_Comment);

// 查询

commentModel.findOne({ })
    .populate('comments.created_by')
    .exec(function (err, commets) {
            console.log(err,commets);
    })

   2.  populate(ref1,ref2) ref1和ref2在源文档的顺序必须一致。

    意思是说在find后找到的文档如果使用ref,必须按照顺序查找引用。

看来文档仔细看是非常重要的。免得浪费精力时间。


© 著作权归作者所有

共有 人打赏支持
造化玉碟
粉丝 44
博文 45
码字总数 26950
作品 0
海淀
前端工程师
私信 提问
Mongoose 5.2.15 发布,MongoDB 异步对象模型工具

Mongoose 5.2.15 发布了,Mongoose 是在 Node.js 异步环境下对 MongoDB 进行便捷操作的对象模型工具。 更新内容如下: fix(populate): 如果未设置,则正确处理虚拟 justOne #6988 fix(popula...

h4cd
09/16
307
0
Mongoose 使用之 Population

何为 Population 用过 MongoDB 的人应该都知道它是没有关系型数据库里的 join 特性的,这意味着当我们使用 MongoDB 读取某个 document 及其关联的 document 的字段的时候,变得尤为麻烦。 基...

陈纪年
2013/06/16
0
2
mongoose 查询操作的高级应用

对于mongoose操作集合的方便之处确实不一般,但主要还是你在引用中对集合的设计,不过mongoose在使用ref关联集合的时候有限制和查出的集合的组合问题有点麻烦。不过不要紧,简单易用就行。 ...

造化玉碟
2014/07/15
0
0
MongooseJS 4.2.5 发布,MongoDB 连接包

MongooseJS 4.2.5 发布,此版本主要是 bug 修复: fixed; handle setting fields in pre update hooks with exec #3549 upgraded; ESLint #3547 ChristianMurphy fixed; bluebird unhandled ......

oschina
2015/11/10
908
0
Mongoose 5.3.4 发布,MongoDB 异步对象模型工具

Mongoose 5.3.4 发布了,Mongoose 是在 Node.js 异步环境下对 MongoDB 进行便捷操作的对象模型工具。 更新内容如下: fix(schema): make and return the schema instance #7131 lineus fix(...

h4cd
10/16
432
0

没有更多内容

加载失败,请刷新页面

加载更多

EOS docker开发环境

使用eos docker镜像是部署本地EOS开发环境的最轻松愉快的方法。使用官方提供的eos docker镜像,你可以快速建立一个eos开发环境,可以迅速启动开发节点和钱包服务器、创建账户、编写智能合约....

汇智网教程
30分钟前
2
0
《唐史原来超有趣》的读后感优秀范文3700字

《唐史原来超有趣》的读后感优秀范文3700字: 作者:花若离。我今天分享的内容《唐史原来超有趣》这本书的读后感,我将这本书看了一遍之后就束之高阁了,不过里面的内容一直在在脑海中回放,...

原创小博客
55分钟前
6
0
IC-CAD Methodology知识图谱

CAD (Computer Aided Design),计算机辅助设计,指利用计算机及其图形设备帮助设计人员进行设计工作,这个定义同样可以用来近似描述IC公司CAD工程师这个岗位的工作。 早期IC公司的CAD岗位最初...

李艳青1987
今天
6
0
CompletableFuture get方法一直阻塞或抛出TimeoutException

问题描述 最近刚刚上线的服务突然抛出大量的TimeoutException,查询后发现是使用了CompletableFuture,并且在执行future.get(5, TimeUnit.SECONDS);时抛出了TimeoutException异常,导致接口响...

xiaolyuh
今天
5
0
dubbo 搭建与使用

官网:http://dubbo.apache.org/en-us/ 一,安装监控中心(可以不安装) admin管理控制台,monitor监控中心 下载 bubbo ops 这个是新版的,需要node.js环境,我没有就用老版的了...

小兵胖胖
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部