2015-12-14 13 views
5

Sono tranquillo nuovo allo script java e al nodo js, ​​ sto cercando di ottenere un valore da un DB MySQL e il valore restituito è [oggetto oggetto] invece di una stringa. non ho trovato alcuna risposta online quale sia il problema. spero che qualcuno qui possa aiutare. il valore della riga è [oggetto oggetto].nodo js funzione return [oggetto oggetto] invece di un valore stringa

qui è la mia funzione

exports.getAllIdInfo= function(dbConnection, tables ,id , callback){ 
     var tableName= tables[i]; 
     var tableVariable = tableName; 
     var myQuery = 'SELECT time, ' + tableVariable + ' FROM ' + tableName + ' WHERE id= ' + id; 
     var query = dbConnection.query(myQuery, function (err, row, result) {  
      console.log(query.sql); 
      if (err) { 
       console.log("getAllGoodIds error"); 
       console.error(err); 
       return; 
      } 
      console.log("row is: " + row); 
      callback(row); 
     }); 
}; 
+0

Se per valore di ritorno si intende l'argomento callback "riga", probabilmente è un oggetto che contiene coppie di valori-chiave nella riga (posso solo indovinare dato che non so quale libreria di sql stai usando), che dovrebbe essere quello che vuoi realmente: se si tratta di un oggetto, puoi ottenere valori da esso invocando le sue proprietà, come row.id e row.name o le colonne che hai nella tua tabella. –

+1

quale libreria stai usando? node-mysql? – madox2

+2

Se vuoi vedere come è strutturato l'oggetto, prova a chiamare console.log (riga) (senza aggiungervi alcuna stringa) o convertirlo in stringa (puoi usare JSON.stringify (row)) –

risposta

5

[object Object] si verifica nel registro quando v'è un oggetto con chiavi e valori. È possibile accedere alle proprietà in un oggetto wth notazione del punto (.) Per esempio

objectName.propertyName 

Se properyName è un altro oggetto sarà ancora tornare [object Object] e quindi è necessario cercare un altro di proprietà all'interno di quella. Le proprietà possono anche contenere metodi (funzioni). Se si desidera ottenere la versione stringa di un oggetto, al fine di confrontarli per esempio, quindi utilizzare

JSON.stringify(objectName); 

Quando si utilizza console.log con il nodo e si dispone di un oggetto di nidificazione, potrebbe non essere in grado di visualizza il contenuto dell'oggetto nidificato. In tal caso è possibile utilizzare:

console.log(util.inspect(objectName, false, null)); 

Per visualizzare l'interezza dell'oggetto. Anche se è necessario richiedere l'utilizzo nel file.

+2

Questo non vale per Node ['console.log()'] (https://nodejs.org/api/console.html#console_console_log_data), che userà (di solito) [] util.inspect() '] (https://nodejs.org/api/util.html#util_util_inspect_object_options) su ogni argomento invece di chiamare semplicemente' .toString() '. FWIW, se vuoi registrare JSON, puoi anche usare 'console.log ('% j', obj)' – robertklep

+0

Hmmm, non sapevo nulla della cosa JSON, bello :) –

+0

JSON.stringify è stato implementato relativamente di recente perché era così popolare È possibile analizzare una stringa da JSON a un oggetto JS con JSON.parse (stringa); Questo è utile per salvare e caricare oggetti con localStorage. –

0

Ho riscontrato anche questo problema, eseguendo il seguente codice in un terminale node.js in combinazione con "watchman-make" (watchman-make: vedere i commenti nella prima risposta allo https://www.quora.com/What-IDEs-are-available-for-node-js-development-on-Linux).

Il seguente codice (con uscita node.js mostrato) illustra le osservazioni formulate nella risposta/commenti accettata:

function arrayToList(array) { 
    var list = {}; 
    for (var i = array.length - 1; i >= 0; i--) { 
    list = {value: array[i], rest: list}; 
    } 
    return list; 
}; 

console.log(arrayToList([1, 2, 3, 4, 5])); 
// { value: 1, 
// rest: { value: 2, rest: { value: 3, rest: [Object] } } } 

// '[Object]' ? 
// http://stackoverflow.com/questions/34264800/node-js-function-return-object-object-instead-of-a-string-value 

var obj = arrayToList([1, 2, 3, 4, 5]); 

console.log('%j', obj); 
// {"value":1,"rest":{"value":2,"rest":{"value":3,"rest":{"value":4,"rest":{"value":5,"rest":null}}}}} 

console.log(JSON.stringify(obj)); 
// {"value":1,"rest":{"value":2,"rest":{"value":3,"rest":{"value":4,"rest":{"value":5,"rest":null}}}}} 
Problemi correlati