0

別のページのモデルからのオブジェクト参照として measureUnit を保持する FoodItem スキーマを作成しようとしています。

これは、measureUnit が存在する MeasureTypesSchema です。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;

これは、別のページにある MeasureTypes モデルからのオブジェクト参照として measureUnit を保持した FoodItemSchema です。

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;

データを入力するときに測定単位の詳細を取得する必要があります。データを入力して、測定単位の詳細を取得する方法です。

4

2 に答える 2

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/

于 2014-10-21T11:12:53.290 に答える
0

FoodItem から measureUnit を入力しようとしましたが、null になりました。

FoodItem.findById(foodId).lean().populate({path:'measureUnit'}).exec(function (err, food)                           
{ console.log(food);} 

この移入で得た結果は

{
"_id": "5440d008b9215ace25587835",

"measureUnit": null,

"__v": 0
}         
于 2014-10-17T11:01:18.900 に答える