2017-12-06 26 views
1

ネストされたMongoDBスキーマを設計しようとしています。MongoDBスキーマ、ネストされたオブジェクトと配列MEANスタックでネストされたオブジェクトを作成する方法

現在、私はこのスキーマを持っており、それが働いている:

var CompanySchema = new mongoose.Schema({ 
    name: String, 
    rate: number 
    date: Date 
}) 

をしかし、私はそれを得るために費やしたい:

var CompanySchema = new mongoose.Schema({ 
    name: String, 
    currency: { 
     mxn: Number, 
     php: Number, 
    }, 
    source: [String], 
    deliveryMethod: [String], 
    date: Date 
}) 

がソースの場合、私は入力元の配列を取得したいです。 ["銀行"、 "デビットカード"、 "代理店"] とほとんどの場合、配送方法があります。

ソースの値が区切られた値ではなく1つの長い文字列として保存されるため、入力が間違っているか、スキーマになっています。

また、私は、通貨がより多くの通貨を持つように設計された方法は正しいと思うが、私は自分の入力jsonがどのように仮定すべきか分からない。

私は郵便配達でそれを試してみました:

{ 
    "name": "google", 
    "currency": { 
     "mxn": 20, 
     "php": 30 
    } 
} 

と、これは私が得た結果である:

{ 
"status": 201, 
"data": { 
    "__v": 0, 
    "name": "google", 
    "date": "2017-12-06T22:38:45.896Z", 
    "_id": "5a2871752e3b7343dc388549", 
    "deliveryMethod": [ 
     null 
    ], 
    "source": [ 
     null 
    ] 
}, 
"message": "Succesfully Created Company" 
} 

の1-私の通貨ネストされたスキーマがあること私のポストのJSONファイルがどうあるべきか正しいかどうか?

2 sourceとdeliveryMethodを文字列の配列として取得するにはどうすればよいですか?

答えて

1

リクエストボディでJSONは次のようになります。

{ 
    "name": "google", 
    "currency": { 
     "mxn": 20, 
     "php": 30 
    }, 
    "source": ["source1", "source 2", "source 3"], 
    "deliveryMethod": ["delMetd 1", "delMetd 2", "delMetd 3"], 
    "date": "2015-11-27T23:00:00Z" 
} 

私はコピー/あなたのコードを貼り付けし、ポストマンでみました。私が戻った応答があった。

私はモンゴシェルを使用してデータベースに接続し、私はこの結果を得る db.companies.find().pretty()を実行した場合
{ 
    "__v": 0, 
    "name": "google", 
    "date": "2015-11-27T23:00:00.000Z", 
    "_id": "5a2915295c5f714f7cb25d90", 
    "deliveryMethod": [ 
     "delMetd 1", 
     "delMetd 2", 
     "delMetd 3" 
    ], 
    "source": [ 
     "source1", 
     "source 2", 
     "source 3" 
    ], 
    "currency": { 
     "mxn": 20, 
     "php": 30 
    } 
} 

{ 
     "_id" : ObjectId("5a2915295c5f714f7cb25d90"), 
     "name" : "google", 
     "date" : ISODate("2015-11-27T23:00:00Z"), 
     "deliveryMethod" : [ 
       "delMetd 1", 
       "delMetd 2", 
       "delMetd 3" 
     ], 
     "source" : [ 
       "source1", 
       "source 2", 
       "source 3" 
     ], 
     "currency" : { 
       "mxn" : 20, 
       "php" : 30 
     }, 
     "__v" : 0 
} 

あなたのスキーマで結構です。あなたがそれを動作させることができない場合は、コレクション(db.companies.drop())を落とすことができます。重要なデータがない場合は、新しいものから始めます。

+0

@MikaSさん、ありがとうございます。あなたの入力内容はJSONファイルで何でしたか?私は郵便配達所で送るデータの構造が間違っていると思う。あなたはそれを共有できますか? – Milad

+0

@Miladボディは私が投稿したのとまったく同じです。 Postmanの[this](https://i.imgur.com/tWhLwx0.png)スクリーンショットを参照してください。 – MikaS

+0

私はそれを把握します。正しいraw JSONファイルを送信していましたが、バックエンドで定義した方法は間違っていました。 – Milad