2015-12-14 3 views
5

Я тихонько новый для java-скрипта и узла js, Я пытаюсь получить значение из базы данных MySQL, а возвращаемое значение - [object Object] вместо строки. Я действительно не нашел ответа в Интернете, в чем проблема. Я надеюсь, что кто-то здесь может помочь. Значение строки - [object Object].node js function return [object Object] вместо строкового значения

вот моя функция

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

Если возвращенное значение, которое вы имеете в виду обратный вызов аргумент «строка», это, вероятно, объект, содержащий пары ключевого значения в строке (я могу только догадываться, так как я не знаю, какую библиотеку sql вы используете), которая должна быть тем, что вы на самом деле хотите: если это объект, вы можете получать значения из него, вызывая его свойства, таких как row.id и row.name или любые столбцы, которые у вас есть в таблице. –

+1

какую библиотеку вы используете? Узел-MySQL? – madox2

+2

Если вы хотите посмотреть, как структурирован объект, попробуйте вызвать console.log (строка) (без добавления какой-либо строки к нему) или преобразовать его в строку (вы можете использовать JSON.stringify (row)) –

ответ

5

[объект Object] происходит в журнале, когда есть объект с ключами и значениями. Вы можете получить доступ к свойствам объекта в т-е точечной нотации (.) Например

objectName.propertyName 

Если properyName еще один объект он будет возвращать [объект Object], и поэтому вы должны искать другое имущество в пределах этого. Свойства также могут содержать методы (функции). Если вы хотите, чтобы получить версию строки объекта для того, чтобы сравнить их, например, а затем использовать

JSON.stringify(objectName); 

При использовании console.log с узлом и у вас есть глубоко вложенный объект, вы не можете быть в состоянии просмотрите содержимое вложенных объектов. В этом случае вы можете использовать:

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

Чтобы просмотреть весь объект. Хотя вы должны требовать использования в файле.

+2

Это недействительно для узла ['console.log()'] (https://nodejs.org/api/console.html#console_console_log_data), который будет (обычно) использовать [' util.inspect() '] (https://nodejs.org/api/util.html#util_util_inspect_object_options) для каждого аргумента вместо простого вызова' .toString() 'на нем. FWIW, если вы хотите зарегистрировать JSON, вы также можете использовать 'console.log ('% j', obj)' – robertklep

+0

Хммм, я не знал о вещи JSON, хорошо :) –

+0

JSON.stringify был реализован сравнительно недавно потому что это было так популярно. Вы можете проанализировать строку с JSON на объект JS с помощью JSON.parse (string); Это полезно для сохранения и загрузки объектов с помощью localStorage. –

0

Я также столкнулся с этой проблемой, выполнив следующий код в терминале node.js в сочетании с «watchman-make» (watchman-make: см. Комментарии в первом ответе на https://www.quora.com/What-IDEs-are-available-for-node-js-development-on-Linux).

Следующий код (с Node.js выходом показан) иллюстрирует вопросы, затрагиваемые в принятых ответов/комментариев:

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}}}}}