Ich verwende MongoDB in meinem Sails-Setup, um meine Sammlungen zu speichern.Sails.js + Mongodb Einfügen eines verschachtelten Json-Datensatzes mit ORM
Ich mache eine POST-Anforderung über eine API, deren Antrag Körper sieht wie folgt aus:
**THE REQUEST BODY**
{
"name":"Martin",
"phone":"5447874787",
"comment":"This is a comment",
"campaign":{
"campaign_id":123454587,
"name":"Digital Marketing",
"category":"Marketing",
"sub_category":"Digital",
"product_name":"no product",
"product_id":5417
}
}
Dieser Datensatz ist in meiner Sammlung mongodb genannt werden gespeichert „führt“. Mein "Leads" Modell wie folgt aussieht:
module.exports = {
schema: true,
attributes:{
name:{
required:true,
type:"string",
unique: true
},
phone:{
type:"string"
},
comment:{
type:"string"
},
campaign:{
model: 'lead_campaign_detail',
// via: "lead_model"
}
}
};
Die zugehörige "Lead_campaign_detail" Modell ist wie folgt
module.exports = {
attributes:{
campaign_id:{
required:true,
type:'integer'
},
name:{
type:"string"
},
category:{
type:"string"
},
sub_category:{
type:"string"
},
product_name:{
type:"string"
},
product_id:{
type:"integer"
}
}
};
und mein Controller-Handler ist:
create_lead_api:function(req, res){
Leads.create(params, function(err, resp){
if(err) return res.negotiate(err);
else return res.json(resp);
})
},
WAS ICH VERSUCHT HABE
1> Ich versuchte .native()
verwenden. Es erstellt einen neuen Datensatz, aber es kümmert sich nicht um die Attribute im Modell "Leads" oder den anderen. Es speichert nur, wie die Anfrage ist.
2> Versuchte Erstellen der .create()
verwenden. Es ist nicht speichert die verschachtelten Werte des Index "Kampagne" in der Anfrage:
{ **IN MY DB it looks like**
"name": "martin",
"phone": "5447874787",
"comment": "This is a comment",
"campaign": "579083f049cb6ad522a6dd3c",
"id": "579083f049cb6ad522a6dd3d"
}
ICH
1> Shop
WILL: der gespeicherte Wert wie folgt aussieht der Datensatz im selben Format wie der Wunsch gesendet wird.2> Nutzen Sie die Wasserlinie ORM-Funktion .create()
Gleiches gilt, wenn möglich zu erreichen.
3>.native()
ist auch in Option, wenn meine Modell-Attribute: {} verwendet werden können, bringen dazwischen, bevor der Datensatz gespeichert werden. Ich möchte nur Werte speichern, die in Attributen definiert sind: {}
Jede Hilfe wird geschätzt, Google versagt mich. Dank
Wie soll Ihr finales Dokument in der Leads-Sammlung aussehen? – rGun
Im gleichen Format der Anforderungskörper (verschachtelt): { "name": "Martin", "Telefon": "5447874787", "comment": "Dies ist ein Kommentar", „Kampagne ": { "campaign_id": 123454587, "name":" Digital Marketing " "Kategorie": "Marketing", "sub_category": "Digital", "product_name": "keine", " product_id ": 5417 } } –