我正在尝试创建一个FoodItem模式我将measureUnit作为另一个页面模型的对象引用。
这是MeasureUnitSchema,其中包含measureUnit。 MeasureTypes是MetricsSchema中的嵌入式数组文档。我正在导出MeasureTypesSchema的模型(MeasureTypes)和MetricsSchema的模型(Metrics)。
var mongoose = require('mongoose');
Schema = mongoose.Schema;
var MeasureTypesSchema = new mongoose.Schema({
measureUnit:{type:String,required:true},
code:{type:String,required:true}
});
var MeasureTypes = mongoose.model('MeasureTypes', MeasureTypesSchema);
module.exports = MeasureTypes;
var MetricsSchema = new mongoose.Schema({
organisation:{type: Schema.Types.ObjectId, ref: 'Organisation'},
MeasureTypes:[MeasureTypesSchema]
});
var Metrics = mongoose.model('Metrics', MetricsSchema);
module.exports = Metrics;
这是FoodItemSchema,我将measureUnit保存为另一页中出现的MeasureTypes模型的对象引用
var mongoose = require('mongoose');
Schema = mongoose.Schema;
var FoodItemSchema = new mongoose.Schema({
measureUnit:{type: Schema.Types.ObjectId, ref:'MeasureTypes',required:true},
});
var FoodItem = mongoose.model('FoodItem', FoodItemSchema);
module.exports = FoodItem;
我需要在填充时获取measureUnit的详细信息,如何填充以便获取measureUnit的详细信息。
答案 0 :(得分:0)
我尝试从FoodItem填充measureUnit并获得null。
FoodItem.findById(foodId).lean().populate({path:'measureUnit'}).exec(function (err, food)
{ console.log(food);}
我获得此填充的结果是
{
"_id": "5440d008b9215ace25587835",
"measureUnit": null,
"__v": 0
}
答案 1 :(得分:0)
听起来好像你的模型分布在不同的文件中。原则上这很好,但是整个模型应该整合在一起,以便整个应用程序可以访问它。
在应用程序主文件(通常是app.js)中,引入数据库连接和模型
var db = require('./model/db')
在/model/db.js中,您可以连接到数据库并导入许多模式文件:
// Bring Mongoose into the app
var mongoose = require( 'mongoose' );
// Build the connection string
var dbURI = 'mongodb://localhost/ConnectionTest';
// Create the database connection
mongoose.connect(dbURI);
// BRING IN YOUR SCHEMAS & MODELS
// For example
require('./metrics');
require('./fooditems');
在每个模式文件中,您需要Mongoose,定义模式和构建模型,例如:
var mongoose = require('mongoose');
var MeasureTypesSchema = new mongoose.Schema({
measureUnit:{type:String,required:true},
code:{type:String,required:true}
});
mongoose.model('MeasureTypes', MeasureTypesSchema);
我还没有尝试在单独的文件中定义引用的模式;如果这继续导致问题,我会尝试将它们全部放入同一个文件中。
最后,在您想要使用模型的页面上,需要Mongoose并再次导入模型。
var mongoose = require( 'mongoose' ),
MeasureTypes = mongoose.model('MeasureTypes');
有关更多信息和背景信息,请查看关于Mongoose连接和用法的博文:http://theholmesoffice.com/mongoose-connection-best-practice/