web-dev-qa-db-ja.com

ノードjs関数は、文字列値の代わりに[オブジェクトオブジェクト]を返します

Javaスクリプトとノードjsに慣れていない、MySQL DBから値を取得しようとしています。戻り値は文字列ではなく[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);
        });
};
9
daniel the man

[object Object]は、キーと値を持つオブジェクトがある場合にログに発生します。オブジェクトのプロパティにドット表記(。)でアクセスできます。

_objectName.propertyName
_

プロパティ名が別のオブジェクトである場合、[object Object]が返されるため、その中から別のプロパティを探す必要があります。プロパティにはメソッド(関数)も含めることができます。たとえば、オブジェクトを比較するためにオブジェクトの文字列バージョンを取得する場合は、次を使用します。

_JSON.stringify(objectName);
_

Nodeでconsole.logを使用し、深くネストされたオブジェクトがある場合、ネストされたオブジェクトの内容を表示できない場合があります。その場合、次を使用できます。

_console.log(util.inspect(objectName, false, null));
_

オブジェクト全体を表示します。ただし、ファイルにはutilが必要です。


たぶんあなたは次のようなものを持っています:

_const myObject = { hello: 'world' };
console.log('My object: '+myObject);
_

これに関する問題は、コンソールでmyObjectを文字列に変換することです。 myObject.toString()を使用します。この場合、次のように自分で簡単に分離できます。

_const myObject = { hello: 'world' };
console.log('My object:', myObject);
_

そして、コンソールはmyObjectを解釈し、うまく表示できるようになりました。

15
George

また、この問題が発生し、node.jsターミナルで「watchman-make」(watchman-make: https://www.quora.com/What -IDE-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}}}}}
0
Victoria Stuart