2016-06-24 2 views
4

私は2つのファイルを持っている:Mongoose 3.xからMongoose 4.xにアップグレードする際に、スキーマ内でスキーマを使用するにはどうすればよいですか?

keyFeature:

mongoose = require('mongoose'); 

Schema = mongoose.Schema; 

DescriptionSchema = require('./description'); 

KeyFeatureSchema = new Schema({ 
    descriptions: [DescriptionSchema], 
    title: String, 
    key: String, 
    display: String, 
    feature: { 
    type: Schema.Types.ObjectId, 
    ref: 'Module' 
    } 
}); 

module.exports = KeyFeatureSchema; 

説明:

mongoose = require('mongoose'); 

DescriptionSchema = new mongoose.Schema(); 

DescriptionSchema.add({ 
    display: String, 
    subdescriptions: [String] 
}); 

module.exports = DescriptionSchema; 

どのように私はこれがマングース4 .add構文と互換性があるように書き換えていますか?

答えて

1

私はあなたの質問を理解しているかどうかはわかりませんが、ここに私が得たものがあります。

mongoose .add documentation for 4.5.2によると、構文の追加は同じです。だから私はあなたのスキーマにtesting.jsファイルをシンプルにしました。私は説明の配列内に1つのオブジェクトを持つkeyFeatureオブジェクトを作成して保存しました。その後、mongoコンソールを使用してmongodに接続し、のキー機能コレクションを照会します。オブジェクトがdbに正しく挿入されました。ここで

私のコードは

[email protected]

でテスト
var mongoose = require('mongoose'); 
var DescriptionSchema = require('./description.js'); 
var KeyFeatureSchema = require('./keyFeature.js'); 

mongoose.connect('mongodb://localhost/mongoose-testing', function(err) { 
    if(err){ 
     console.log('Could not connect to mongoose', err); 
    }else{ 
     console.log('Successfully connected to mongoose'); 
     mongoose.model('Description', DescriptionSchema); 
     mongoose.model('Keyfeature', KeyFeatureSchema); 
     var Keyfeature = mongoose.model('Keyfeature'); 

     new Keyfeature({ 
      descriptions: [{ 
       display: 'This is the display content from descriptions', 
       subdescriptions: ['Subdescription 1'] 
      }], 
      title: 'tittle', 
      key: 'key', 
      display: 'display' 
     }).save(function(err){ 
      if(err){ 
       console.log('Error when saving', err); 
      }else{ 
       console.log('Saved'); 
      } 
     }); 
    } 
}); 

です

関連する問題