0
我在尝试使猫鼬的填充功能起作用时遇到了最可怕的麻烦。我已经看过这里的所有主题,没有任何帮助。我的模式映射如下。猫鼬填充方法
'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);
我已经尝试了所有下面的查询在猫鼬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()
有没有人有什么建议?这是杀了我!
请出示什么 “但没有工作” 的意思。有错误吗? –
不确定您使用的Mongoose版本是什么,但我从来没有将Schema.ObjectId看作是有效的类型。这应该是“Schema.Types.ObjectId” - 应该至少导致架构验证错误... – SylonZero
你想实现什么?在你的架构中,'extras'不是一个引用,而是一个嵌入式文档,它不应该像这样工作。请解释你真正想要的,然后我们可以帮助你。 –