Ich bin ein bisschen wie ein Noob arbeiten an meiner ersten CRUD-Anwendung (Traum Journal) mit Node, Express und MongoDB/Mongoose.Objekteigenschaft Schlüssel unterscheidet sich in req.body als Client-Seite (Express)
Ich erstelle ein einfaches Objekt basierend auf ein paar Benutzerformular Eingaben und dann eine Post-Anfrage an den Server, der wiederum Mongoose.save() aufruft.
Das Objekt, das ich auf der Clientseite erstelle, ist jedoch etwas anders als das, das vom Server empfangen wird, und ich bin völlig im Verlust, warum.
Zuerst ich einige Werte aus einer Form erhalten und sie in ein Objekt setzen:
// within button click event handler
var dreamText = $('#dream-text').val().trim();
var dreamTags = ["tag 1", "tag 2", "tag 3"]; // for debugging
var dreamLucid = $('#dream-lucid').val() == 'Yes' ? true : false;
var dreamDate = $('#dream-date').val();
var dream = {
userID: 'test',
text: dreamText,
tags: dreamTags,
isLucid: dreamLucid,
dateCreated: dreamDate
};
hier ein console.log Traum zeigt alles, wie es sein sollte:
Object {userID: "test", text: "sample text", tags: Array[3], isLucid: false, dateCreated: "2016-08-08"}
Aus dort gebe ich eine POST-Anfrage mit dem Traumobjekt:
$.ajax({
type: 'POST',
url: '/new',
data: dream,
success: function(data){
console.log('dream saved');
}
});
Jetzt auf der Serverseite, mit Express und Mongoose, ich bin versucht, das Objekt zu einem DB zu speichern:
router.post('/', urlencodedParser, function(req, res) {
console.log(req.body);
var newDream = Dream(req.body).save(function(err, data){
if (err) {
throw error;
}
});
});
Alle Eigenschaften außer Tags speichern richtig, und ein console.log von req.body
ergibt:
{ userID: 'test',
text: 'sample text',
'tags[]': [ 'tag 1', 'tag 2', 'tag 3' ],
isLucid: 'false',
dateCreated: '2016-08-08' }
Beliebig Idee, warum die tags
Eigenschaft auf der Clientseite 'tags[ ]'
wird, wenn es durch die POST-Anfrage weitergegeben wird?
Ich habe versucht, sowohl tags: Array
und tags: [String]
in meinem Mongoose Modell, aber das Problem scheint auftreten zu werden, bevor ich jemals Mongoose.save.
Es funktioniert jetzt, danke! Ich fand, dass ich auch 'bodyParser.json()' auf der Serverseite benutzen musste. –
@ E.Walsh - Ja, das macht Sinn. Etwas auf der Serverseite muss den JSON parsen. Da es so aussieht, als ob Sie neu hier wären, wenn Sie Ihre Frage beantwortet haben, können Sie dies der Community anzeigen, indem Sie auf das grüne Häkchen links neben dieser Antwort klicken. Das bringt dir auch einige Reputationspunkte für das richtige Vorgehen. – jfriend00