2016-09-20 3 views
7

ここではこの質問に多くの回答がありましたが、まだそれは得られません(多分もっと複雑な例を使用しているからかもしれません)... 私は何をしようとしていますか? 「顧客」のスキーマを定義し、ネストされた「サブフィールド」を持つ2つのフィールドと、繰り返す可能性のあるフィールドを持ちます。ここで私が何を意味するかです:マングーススキーマのネストされたオブジェクト

let customerModel = new Schema({ 
    firstName: String, 
    lastName: String, 
    company: String, 
    contactInfo: { 
     tel: [Number], 
     email: [String], 
     address: { 
      city: String, 
      street: String, 
      houseNumber: String 
     } 
    } 
}); 

TELメールは配列であるかもしれません。 とアドレスは繰り返されませんが、表示されるようにいくつかのサブフィールドがあります。

どうすればこの作品を作成できますか?

答えて

5
var mongoose = require('mongoose'); 

mongoose.connect('mongodb://localhost/test'); 

var CustomerModel = mongoose.model('CustomerModel', { 
    firstName: String, 
    lastName: String, 
    company: String, 
    connectInfo: { 
     tel: [Number], 
     email: [String], 
     address: { 
      city: String, 
      street: String, 
      houseNumber: String 
     } 
    } 
}); 

//create a record 
var customer = new CustomerModel({ 
    firstName: 'Ashish', 
    lastName: 'Suthar', 
    company: 'asis', 
    connectInfo: { 
     tel: [12345,67890], 
     email: ['[email protected]','[email protected]'], 
     address: { 
      city: 'x', 
      street: 'y', 
      houseNumber: 'x-1' 
     } 
    } 
}); 

//insert customer object 
customer.save((err,cust) => { 
    if(err) return console.error(err); 

    //this will print inserted record from database 
    //console.log(cust); 
}); 


// display any data from CustomerModel 
CustomerModel.findOne({firstName:'Ashish'}, (err,cust) => { 
    if(err) return console.error(err); 

    //to print stored data 
    console.log(cust.connectInfo.tel[0]); //output 12345 
}); 


//update inner record 
CustomerModel.update(
    {firstName: 'Ashish'}, 
    {$set: {"connectInfo.tel.0": 54320}} 
    ); 
+0

これを行う方法上の任意のコメント: https://stackoverflow.com/questions/48753436/dynamic-mongodb-schema-object-creation-in-angularjs – CodeHunter

2
// address model 
    var addressModelSchema = new Schema({ 
       city: String, 
       street: String, 
       houseNumber: String}) 
    mongoose.model('address',addressModelSchema ,'address') 

// contactInfo model 
     var contactInfoModelSchema = new Schema({ 
      tel: [Number], 
      email: [String], 
      address : { 
        type : mongoose.Schema.Type.ObjectId, 
        ref:'address' 
         } 
       }) 
    mongoose.model('contactInfo ',contactInfoModelSchema ,'contactInfo ') 

// customer model 
    var customerModelSchema = new Schema({ 
     firstName: String, 
     lastName: String, 
     company: String, 
     contactInfo : { 
    type : mongoose.Schema.Type.ObjectId, 
    ref:'contactInfo ' 
    } 
    }); 
    mongoose.model('customer',customerModelSchema ,'customer') 

//add new address then contact info then the customer info 
// it is better to create model for each part. 
+0

この上の任意のコメント: https://stackoverflow.com/questions/48753436/dynamic-mongodb-schema-object-creation-in-angularjs – CodeHunter

関連する問題