簡體   English   中英

在 Mongoose 上填充模式

[英]Populate Schema on Mongoose

我有兩個 collections 一個是用戶,另一個是貓。 我想要我的用戶集合下的貓數據。 但我沒有得到。

用戶.js

var Schema = mongoose.Schema;
var userSchema = Schema({
_id: Schema.Types.ObjectId,
username: String,
email: { type: String, unique: true, lowercase: true, trim: true },
password: String,
role: String,
cats: [{ type: Schema.ObjectId, ref: 'Cat' }]
});
var User = mongoose.model('User', userSchema);
exports.default = User;

貓.js

var mongoose = require("mongoose");
var Schema = mongoose.Schema;
var catSchema = Schema({
fname: String,
mname: String,
lname: String,
});
var Cat = mongoose.model('Cat', catSchema);
exports.default = Cat;

開/關

“_id”:ObjectId(“5a446ab43533970b8489e1ac”),“用戶名”:“xyz”,“電子郵件”:“xyz@gmail.com”,“密碼”“$2a$10$ogerY6OiCRKy9TjPYERaOugUJeqelBl.yToJ4ZBX3ac2MVZQpsKOu”,“角色”:“用戶", "貓": [ ], "__v": 0

預計 Output

“_id”:ObjectId(“5a446ab43533970b8489e1ac”),“用戶名”:“xyz”,“電子郵件”:“xyz@gmail.com”,“密碼”“$2a$10$ogerY6OiCRKy9TjPYERaOugUJeqelBl.yToJ4ZBX3ac2MVZQpsKOu”,“角色”:“用戶", "cats": [{ "_id": ObjectId("5a44707effc66a234447c36b"), "fname": "felix", "mname": "", "lname": "", } ], "__v": 0

您可以將它們組合為僅一種如下所示的架構。 除非數組數量連續增加數百個,否則沒有任何理由單獨創建架構。

var Schema = mongoose.Schema;
var userSchema = Schema({
  _id: Schema.Types.ObjectId,
  username: String,
  email: { type: String, unique: true, lowercase: true, trim: true },
  password: String,
  role: String,
  cats: [
    { 
      _id: Schema.Types.ObjectId,
      fname: String,
      mname: String,
      lname: String,
    }
  ]
});
var User = mongoose.model('User', userSchema);
exports.default = User;

修復您的架構(應為cats: [{ type: Schema.Types.ObjectId, ref: 'Cat' }]並參考http://mongoosejs.com/docs/populate.html

您可以使用model.find().populate('ref')獲取這樣的數據

const story = await User.find().populate('Cat');

它將返回所有用戶並針對每個用戶返回相應的Cat數組。 您已經在User model中提到了Catref ,因此您不需要做任何額外的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM