2015-12-14 26 views
5

dize değeri yerine döndürme java komut dosyası ve düğüm js, için yeniyim, bir MySQL DB'den bir değer elde etmeye çalışıyorum ve dönüş değeri [object Object] yerine bir dizenin Gerçekten herhangi bir cevabı çevrimiçi olarak bulamadım problem nedir. Umarım birileri yardım edebilir. satır değeri [object Object].node js işlevi, bir dize değeri

burada anahtarlar ve değerlerle bir nesne olduğunda

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

, büyük olasılıkla içeren bir nesne:

(gösterilmemiştir node.js çıkışı ile) Aşağıdaki kod kabul cevap/yorum yapılan noktalarını göstermektedir satırdaki anahtar-değer çiftleri (yalnızca hangi sql kütüphanesini kullandığınızı bildiğimden tahmin edebilirim), gerçekte istediğin gibi olmalı: eğer bir nesne ise, onun özelliklerini çağırarak değerlerini alabilirsin, row.id ve row.name veya tablonuzdaki sütunlar gibi. –

+1

hangi kütüphaneyi kullanıyorsunuz? Düğüm-mysql? – madox2

+2

Nesnenin nasıl yapılandırıldığını görmek isterseniz, console.log (satır) (buna herhangi bir dize eklemeden) çağırarak veya dizgeye dönüştürmeyi (JSON.stringify (satır)) –

cevap

5

[object Object] günlüğüne oluşur benim fonksiyonudur. Sen nokta gösterimde wth bir nesne özelliklerini erişebilirsiniz (.) Örneğin

objectName.propertyName 

properyName hala dönecektir başka nesne [object Object] ve böylece bu içindeki başka özellik için bakmak gerekirse. Özellikler ayrıca yöntemler (işlevler) içerebilir. Örneğin karşılaştırmak amacıyla bir nesnenin dize sürümünü almak istiyorsanız düğümle console.log kullanarak ve bir derin iç içe nesne varsa ardından

JSON.stringify(objectName); 

kullanmak isterseniz mümkün olmayabilir iç içe nesne içeriğini görüntüleyin. Bu durumda, nesnenin bütününü görüntülemek için:

. Dosyada kullanmanız gerekse de.

+2

Bu, Node ['console.log()'] (https://nodejs.org/api/console.html#console_console_log_data) için geçerli değildir. util.inspect() '] (https://nodejs.org/api/util.html#util_util_inspect_object_options) sadece .toString()' yi çağırmak yerine her bir argümanda. FWIW, JSON oturum açmak istiyorsanız, ayrıca 'console.log ('% j', obj)' – robertklep

+0

Hmmm'yi de kullanabilirim, JSON olayı hakkında hiçbir şey bilmiyordum, güzel :) –

+0

JSON.stringify nispeten yakın zamanda uygulandı çünkü çok popülerdi. JSON'dan JSON.parse (string) ile bir JS nesnesine bir dizeyi ayrıştırabilirsiniz; Bu, localStorage ile nesneleri kaydetmek ve yüklemek için iyidir. –

0

Ayrıca, "watchman-make" (watchman-make: https://www.quora.com/What-IDEs-are-available-for-node-js-development-on-Linux adresindeki ilk yanıttaki yorumları görün) ile birlikte bir node.js terminalinde aşağıdaki kodu çalıştırarak da bu sorunla karşılaştım. dönüş değeri tarafından size geri arama bağımsız değişkeni "satır" demek

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