0

私はNodeJSで小さな会社のプロファイル管理システムを書いています。データストレージにはMongoDBを使用しています。私にはコレクション「会社」があり、すべてのオブジェクトが単一の会社です。確かに、企業には「名前」、「電子メール」、「電話」などのいくつかのパラメータがあります。これらはすべて単一の文字列フィールドです。これが「company」オブジェクトの現在のスキーマです。

{
    "company_name": "ACME Ltd.",
    "company_email": "acmeltd@example.com",
    "company_tel": "+49374727384",
    "_id": {
        "$oid": "4fd115b6e94a7e2408000001"
    }
}

現在の「会社」プロファイルを保存するための私のコードは次のとおりです。

app.post('/addcompany',function(req,res){
    db.collection("companies",function(err,collection){
        collection.insert( {
            "company_name":req.body.company_name,
            "company_email":req.body.company_email,
            "company_tel":req.body.company_tel
        });
    });
    res.redirect('/companies');
});

ただし、すべての会社には複数の(会社ごとに異なる)サプライヤーがあり、それらを「会社」オブジェクトに保管したいと思います。したがって、「company」オブジェクト内に内部オブジェクト「suppliers」を作成する必要があると思います。オブジェクト「suppliers」には、内部オブジェクト「supplier1」、「supplier2」などが必要です。すべての「supplier1」オブジェクトには6つのパラメータが必要です。 「supplier_name」、「supplier_tel」など。つまり、私の質問は、「company」オブジェクトのストレージサプライリストに最適な方法であり、NodeJSからどのように操作する必要があるかということです。

更新:コードをこのように変更しましたが、動作するようになりました。

app.post('/addcompany',function(req,res){
    db.collection("companies",function(err,collection){
        collection.insert( {
            "company_name":req.body.company_name,
            "company_email":req.body.company_email,
            "company_tel":req.body.company_tel,
            "company_suppliers" : [
                { "supplier_name" : "jane_test", "supplier_tel" : "123456_test", "comment" : "Good supplier_test" },
                { "supplier_name" : "jessy_test", "supplier_tel" : "654321_test", "comment" : "Bad supplier_test" }
              ]
        });
    });
    res.redirect('/companies');
});
4

1 に答える 1

1

それらを会社オブジェクト内に格納することに設定されている場合は、その目的のためのデータ構造である配列を使用することをお勧めします。

スキーマ設計に関する MongoDB での議論は、ここで行う決定に広く行き渡っています: http://www.mongodb.org/display/DOCS/Schema+Design特に「埋め込みとリンク」セクションを見てください。

于 2012-06-08T13:39:14.280 に答える