2015-12-14 17 views
5

Jestem cicho nowy w Javy i węźle js, Próbuję uzyskać wartość z MySQL DB, a wartość zwracana to [obiekt obiektu] zamiast ciągu. Naprawdę nie znalazłem żadnej odpowiedzi w Internecie, na czym polega problem. Mam nadzieję, że ktoś tu może pomóc. wartość wiersza to [obiekt obiektu].funkcja węzła js zwraca [obiekt obiektu] zamiast wartości łańcucha

tutaj jest moja funkcja

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

Jeśli wartość zwracana przez znaczy argument callback „wiersz”, to prawdopodobnie obiekt zawierający pary klucz-wartość w wierszu (mogę tylko zgadywać, ponieważ nie wiem, której biblioteki sql), które powinny być tym, czego faktycznie potrzebujesz: jeśli jest to obiekt, możesz uzyskać z niego wartości, wywołując jego właściwości, takie jak row.id i row.name lub dowolne kolumny, które masz w swojej tabeli. –

+1

jakiej biblioteki używasz? node-mysql? – madox2

+2

Jeśli chcesz zobaczyć, jak obiekt jest zbudowany, spróbuj wywołać console.log (wiersz) (bez dołączania do niego żadnego ciągu znaków) lub przekonwertuj go na ciąg (możesz użyć JSON.stringify (wiersz)) –

Odpowiedz

5

[object Object] pojawia się w dzienniku, gdy istnieje obiekt o klucze i wartości. Możesz uzyskać dostęp do właściwości w obiekcie WTH notacji kropki (.) np

objectName.propertyName 

Jeśli properyName Kolejnym celem będzie jeszcze powrócić [object Object], a więc trzeba szukać innego mienia w tym. Właściwości mogą również zawierać metody (funkcje). Jeśli chcesz uzyskać wersję ciąg obiektu w celu porównania ich za przykład, a następnie użyć

JSON.stringify(objectName); 

Podczas korzystania z węzła console.log i masz głęboko zagnieżdżony obiekt, może nie być w stanie wyświetl zawartość zagnieżdżonego obiektu. W takim przypadku można użyć:

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

Aby wyświetlić cały obiekt. Chociaż musisz wymagać wykorzystania w pliku.

+2

Nie dotyczy to węzłów Node ['console.log()'] (https://nodejs.org/api/console.html#console_console_log_data), które będą (zwykle) używać [' util.inspect() '] (https://nodejs.org/api/util.html#util_util_inspect_object_options) dla każdego argumentu, zamiast po prostu wywoływać na nim' .toString() '. FWIW, jeśli chcesz zalogować JSON, możesz również użyć 'console.log ('% j', obj)' – robertklep

+0

Hmmm, nie wiedziałem o rzeczy JSON, fajnie :) –

+0

JSON.stringify został zaimplementowany stosunkowo niedawno ponieważ był tak popularny. Możesz sparsować ciąg z JSON-a do obiektu JS za pomocą JSON.parse (string); Jest to dobre do zapisywania i ładowania obiektów za pomocą localStorage. –

0

Również napotkałem ten problem, uruchamiając następujący kod w terminalu node.js w połączeniu z "watchman-make" (watchman-make: zobacz komentarze w pierwszej odpowiedzi na https://www.quora.com/What-IDEs-are-available-for-node-js-development-on-Linux).

Poniższy kod (z wyjściem node.js pokazany) przedstawia stanowisko wyrażone w Zaakceptowanych odpowiedź/komentarz:

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}}}}} 
Powiązane problemy