zurück, wenn ich eine Curl-Anfrage an meine Node.js (EXPRESS) API curl mache http://127.0.0.1:3000/api/events/user/id/1
ich dieses Ergebnis:Wie gebe ich einen JSON umgeben von {} anstelle von [] auf Node.js (express) zurück und gebe ein Ergebnis einer Abfrage mit knex und postgresql
[{"id":"1","name":"casamiento 1","description":"el casamiento del tio claudio","mode_id":1,"initial_date":"2016-05-28T22:14:57.000Z","end_date":"2016-05-28T22:14:58.000Z","state_id":1,"user_id":"1","location":"0101000020E61000000000000000805BC00000000000003E40"},{"id":"2","name":"casamiento 2","description":"el casamiento del tio claudio 2","mode_id":1,"initial_date":"2016-05-28T22:14:57.000Z","end_date":"2016-05-28T22:14:58.000Z","state_id":1,"user_id":"1","location":"0101000020E61000000000000000405BC00000000000003D40"},{"id":"3","name":"fiesta del sandwich de miga","description":"Nos juntamos a comer sandwiches de miga hasta reventar","mode_id":1,"initial_date":"2016-05-28T22:15:58.000Z","end_date":"2016-05-28T22:15:58.000Z","state_id":1,"user_id":"1","location":"0101000020E610000000000000000000000000000000804840"}]
und ich brauche die Ausgabe von geschweiften Klammern wie umgeben zu sein:
{{"id":"1","name":"casamiento 1","description":"el casamiento del tio claudio","mode_id":1,"initial_date":"2016-05-28T22:14:57.000Z","end_date":"2016-05-28T22:14:58.000Z","state_id":1,"user_id":"1","location":"0101000020E61000000000000000805BC00000000000003E40"},{"id":"2","name":"casamiento 2","description":"el casamiento del tio claudio 2","mode_id":1,"initial_date":"2016-05-28T22:14:57.000Z","end_date":"2016-05-28T22:14:58.000Z","state_id":1,"user_id":"1","location":"0101000020E61000000000000000405BC00000000000003D40"},{"id":"3","name":"fiesta del sandwich de miga","description":"Nos juntamos a comer sandwiches de miga hasta reventar","mode_id":1,"initial_date":"2016-05-28T22:15:58.000Z","end_date":"2016-05-28T22:15:58.000Z","state_id":1,"user_id":"1","location":"0101000020E610000000000000000000000000000000804840"}}
Mein Modell „Ereignis“ Datei wie diese ist, die die Abfrage macht Knex und dann die Ergebnisse zurücksenden:
var express = require('express');
var router = express.Router();
var Promise = require("bluebird");
var connectionString = 'postgres://postgres:[email protected]:5432/flock';
var knex = require('knex')({
client: 'pg',
connection: connectionString,
searchPath: 'knex,public'
});
//Get all events from a particular user
exports.getUserEvents=function(id_user){
console.log("Retrieving data from id_user: "+id_user);
var promise1 = Promise.try(function() {
return knex('events')
.select('*')
.where('user_id', id_user);
});
var promise2=promise1.then(function (rows) { // this creates a new promise, and the promise created here is what gets returned to the caller
console.log('Returning '+rows.length+' rows from the user with id '+id_user);
return rows;
});
return promise2;
}
und meinem Router-Datei, die die Modelldatei Funktion getUserEvents nennt, ist wie folgt:
var express = require('express');
var router = express.Router();
var Event=require('../models/event');
//get all events from a user
router.get('/user/id/:id_user', function(req, res, next) {
var id_user= req.params.id_user;
var promise = Event.getUserEvents(id_user);
promise.then(function (result) {
console.log('Sending response');
return res.json(result); //<---this line builds the JSON response
});
promise.catch(function (err) {
return res.sendStatus(500);
});
});
module.exports = router
Meine Frage ist: Wie kann ich die json Objektliste durch {} und nicht von [] umgeben schicken wie kommt jetzt zurück ?. Vielen Dank
EDIT: Dies löste mein Problem ist das endgültige Format { "Zeilen": [{row1}, {row2}, etc]}
exports.getUserEvents=function(id_user){
console.log("Retrieving data from id_user: "+id_user);
var promise1 = Promise.try(function() {
return knex('events')
.select('*')
.where('user_id', id_user);
});
var promise2=promise1.then(function (rows) { // this creates a new promise, and the promise created here is what gets returned to the caller
console.log('Returning '+rows.length+' events from the user with id '+id_user);
return {rows};//<----This solved the issue
});
return promise2; }
Warum brauchen Sie diese genaue Ausgabe (das ist nicht gültig)? Könnten Sie auch beantworten, was Sie diesem Output geben werden? Warum ist ein Array [{}, {}] oder ein Array-Objekt {1: {}, 2: {}} nicht geeignet? – iovoid