私は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');
});