mongoose 主鍵關聯的表,自動帶出另一張表的資料
阿新 • • 發佈:2018-11-29
有這樣兩張表
addon_passwordbox_category
'use strict' var mongoose = require('mongoose'), Schema = mongoose.Schema /*** * 加密後的密碼錶 *2018年10月18日14:41:23 */ var addon_passwordbox_list = new Schema({ email: String, // 使用者郵箱 title: String, // 密碼的標題 encryptedPassword: String, // 加密後的密碼 catId: {type: Schema.Types.ObjectId, ref: 'addon_passwordbox_category'}, // addon-passwordbox-category表中對應的類別的_id desc: String, // 密碼的描述 CreatedDate: {type: Date, default: Date.now()} // 建立時間 }) mongoose.model('addon_passwordbox_list', addon_passwordbox_list)
'use strict' var mongoose = require('mongoose'), Schema = mongoose.Schema /*** * 密碼的分類表 *2018年10月18日14:41:23 */ var addon_passwordbox_category = new Schema({ email: String, // addon-passwordbox-list表中的_id name: String, // 沒有加密的密碼 desc: String, // 類別的描述 CreatedDate: {type: Date, default: Date.now()} // 建立時間 }) mongoose.model('addon_passwordbox_category', addon_passwordbox_category)
addon_passwordbox_list
二張表使用catId作為主鍵關聯 現在查 addon_passwordbox_list 表時要自動帶出關聯的addon_passwordbox_category表的資料
使用
populate()
程式碼如下:
findAllByCondition: function (condition, callback) { addon_passwordbox_list .find(condition, {__v: 0}) .lean() .populate('catId', 'id name') .exec(function (err, reply) { if (err) { callback(err || new Error('find all by conditon error')) } else { callback(null, reply) } }) },
此外還可以這樣用
.populate({
path: 'fans',
match: { age: { $gte: 21 }},
select: 'name -_id',
options: { limit: 5 }
})