Warum express.js gibt ein leeres array zurück, wenn mit res.send()?
Habe ich dieses Objekt enthält ein array von Schlüssel-Wert-Paare.
console.log(myObject);
[ 'askdasuni.com': '11111',
'capsfrom2011.com': '22222',
'defusionet.com': '33333' ]
Wenn ich Anrufe, res.send(myObject) in meine Anwendung bekomme ich die folgende:
< HTTP/1.1 200 OK
< X-Powered-By: Express
< Content-Type: application/json; charset=utf-8
< Content-Length: 2
< Date: Wed, 11 Mar 2015 18:15:41 GMT
< Connection: keep-alive
[]
Ich würde erwarten, dass Sie zu senden, um den Inhalt von myObject, nicht nur "[]".
Wenn ich meinen code in res.send('string') anstelle, bekomme ich die folgende:
< HTTP/1.1 200 OK
< X-Powered-By: Express
< Content-Type: text/html; charset=utf-8
< Content-Length: 6
< Date: Wed, 11 Mar 2015 18:21:09 GMT
< Connection: keep-alive
<
string
- Post Code, meine Vermutung ist, dass Sie vielleicht eine Funktion aufrufen, ohne ein callback hense senden ein leeres Objekt.
- Nicht sicher, ob es ein Tippfehler ist, aber was Sie aufgeführt haben, wie das array selbst ist nicht gültig.
- Ich bin auch vor dem gleichen problem . Haben Sie die Lösung ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche problem, mit einem besiedelten "Objekt" zurückgegeben wird, als ein leeres array ist, obwohl Sie schön angezeigt mit Konsole.log.
Bei der Untersuchung fand ich, dass ich tatsächlich initialisiert ein array, und dann verwendet, als ob es ein Objekt:
Die resultierende variable ist wahrscheinlich am besten beschrieben als "ein leeres array mit Eigenschaften" eher als ein Objekt, und als solches waren die Werte nicht zurückgegeben res.send().
Lösung 1
Initialisieren Sie die variable als ein Objekt, mit geschweiften Klammern:
Lösung 2
Konvertieren Sie das Ergebnis in ein Objekt, bevor es zurückgegeben wird, wie folgt:
schicken mit
res.json stellt sicher, dass die Antwort haben utf-8-Zeichensatz und application/json content-type
Nicht verwechselt werden mit res.json([body]), res.jsonp([body]), res.senden([body]) alle unterscheiden sich von einander und verwenden Sie es wie und Wann Sie es brauchen.
res.senden([body])
Sendet die HTTP-response. Der parameter body kann ein Buffer-Objekt, ein String, ein Objekt oder ein Array.
res.json([body])
Sendet eine JSON-Antwort. Diese Methode ist identisch mit res.send() mit einem Objekt oder-array als parameter. Jedoch, Sie können es verwenden, um konvertieren andere Werte JSON, beispielsweise null, und undefined. (obwohl diese technisch nicht gültige JSON)
Also, wenn Sie streng senden möchten JSON-Antwort, am besten wäre die Nutzung von res.json(..)
Müssen Sie wickeln Sie Ihr Objekt in geschweifte Klammern, nicht eckige Klammern, wie Sie senden es als ein Objekt statt einem array. Schlüssel-Wert-Paare müssen gewickelt werden in geschweifte Klammern in javascript.
siehe diese Antwort: Warum wird ein string-index in ein javascript-array nicht vergrößern Sie die Länge für eine Größe?
z.B.
Ich bekam keine Nachricht von der Konsole,bekomme Fehler "
vom Axios Antwort.Dann denke ich, es wurde verursacht durch CORS. Die Frage wurde gelöst durch hinzufügen folgenden code: