簡體   English   中英

貓鼬填充方法

[英]Mongoose populate method

我在嘗試使貓鼬的填充功能正常工作時遇到了最糟糕的麻煩。 我已經查看了SO上的所有線程,但沒有任何幫助。 我的架構如下所示。

'use strict';

/**
 * Module dependencies.
 */
var mongoose = require('mongoose'),
  Schema = mongoose.Schema;


/**
 * Prodcut Feature Extra
 */
var extra = new Schema({
  name: {
    type: String,
    default: '',
    required: 'Please fill Product name',
    trim: true
  },
  price: {
    type: Number,
    default: 0
  },
  description: {
    type: String,
    trim: true
  },
  toolTip: {
    type: String,
    trim: true,
    min: 3,
    max: 140
  },
  created: {
    type: Date,
    default: Date.now
  },
  user: {
    type: Schema.ObjectId,
    ref: 'User'
  }
});

/**
 * Product Feature Schema
 */
var feature = new Schema({
  name: {
    type: String,
    default: '',
    required: 'Please fill feature name',
    trim: true
  },
  created: {
    type: Date,
    default: Date.now
  },
  user: {
    type: Schema.ObjectId,
    ref: 'User'
  }
});

/**
 * Product Schema
 */
var ProductSchema = new Schema({
  name: {
    type: String,
    default: '',
    required: 'Please fill Product name',
    trim: true
  },
  created: {
    type: Date,
    default: Date.now
  },
  features: [feature],
  extras: [extra],
  user: {
    type: Schema.ObjectId,
    ref: 'User'
  }
});

mongoose.model('Feature', feature);
mongoose.model('Extra', extra);
mongoose.model('Product', ProductSchema);

我已經在Mongoose Repl中嘗試了以下所有查詢,但沒有任何效果

  models.Product.find().populate("Extra", "name").exec() models.Product.find().populate({path: "extras", location: "Extra"}).exec() models.Product.find().populate('extras', 'name').exec() models.Product.find().populate('extras', 'Extra').exec() 

有沒有人有什么建議? 這真殺了我!

只是好奇!

下面的初始化不是在ProductSchema中引用之前必須完成的嗎?

mongoose.model('Feature', feature);
mongoose.model('Extra', extra);

像這樣

mongoose.model('Feature', feature);
mongoose.model('Extra', extra);

var ProductSchema = new Schema({
name: {
 type: String,
 default: '',
 required: 'Please fill Product name',
 trim: true
},
created: {
  type: Date,
  default: Date.now
},
features: [ {
  type: Schema.ObjectId,
  ref: 'Feature'
}],
extras: [ {
  type: Schema.ObjectId,
  ref: 'Extra'
}],
user: {
  type: Schema.ObjectId,
  ref: 'User'
}
});

比這應該工作

models.Product.find().populate("extras")

暫無
暫無

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

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