2015-04-25 26 views
6

'da JSON olarak veri nasıl döndürülür Sequelize sorgusu oluşturduğumda bana tahmin ettiğim bir nesne (veya dizi) bir Sequelize modelidir (veya Model dizisi (koleksiyon türü ??)) ancak herhangi bir yerde belgelenmemiş, bu yüzden sadece tahmin ediyorum. Her zaman sonuçların JSON olmasını isterim. Bunu zorlamak için sorguda geçirebileceğim bir şey var mı? Mümkünse JSON olacağım her sonucu masaj yapmamayı tercih ederim.Sequelize

console.log(JSON.stringify(users)) 

Yani bazı serileştirme inşa var:

The documentation gösterisi bu bir dize döndürmek için. Şu anda belgesiz toJSON() yöntemi kullanarak, bu yapıyorum: hantal

query().then(function(result) { 
    if(result.length) { 
     return result.toJSON(); 
    } else { 
     return result.map(function(item) { 
      return item.toJSON(); 
     }); 
    } 
}); 

.

cevap

2

Birden çok sonucu olan bir sorgu yapıyorsanız, bir dizinin döndürülmesini beklemeniz gerekir. Sonuç dizisindeki her öğenin bir JSON nesnesi olduğunu bulmalısınız.

Böyle belirli bir alanı erişmek mümkün olmalıdır: Hele sen derneklerle, tahmin edebileceğiniz gibi ancak bu her zaman davranmaz Query raw: true kullanabilirsiniz result[0].myfieldname

+0

Bu, Sequelize'i her zaman sonuçları JSON olarak döndürmeye zorlamanın imkansız olduğu anlamına mı geliyor? –

+1

Bu, JSON'da olması gerektiği anlamına gelir. İçinde ne olduğunu görmek için JSON.stringify() kullanmayı deneyin. Kodunuz şunun gibi görünmelidir: 'query(). Sonra (işlev (sonuç) { console.log (JSON.stringify (sonuç)) });' – Lucas

7

.

query({ 
    // ... 
    raw: true 
}).then(function(result) { 
    // Result is JSON! 
}); 

Ancak böyle bir şey alabilirsiniz ilişkilendirmeleri kullandığınız durumda:

yerine Tahmin edebileceğiniz ne
{ 
    foo: true, 
    "associated.bar": true 
} 

:

{ 
    foo: true, 
    associated: { 
     bar: true 
    } 
} 
6

Eğer modelini aldığınızda veritabanından .get({ plain: true}) sonucunu arayabilir ve sizin için dönüşümü halledebilir. Fonksiyon çağrısının değerini bir değişkene atayabilirsiniz. Umut

..).then(function(user){ var _user = user.get({ plain: true}); console.log(_user); //Should be valid json object });

Örneğin

için bu yardımcı olur.