Consultar coleção incorporada em um projeto Sails com MongoDB
-
27-12-2019 - |
Pergunta
Estou usando o Sails-mongo no meu projeto e preciso executar uma consulta em uma coleção incorporada.Meus dados são mais ou menos assim:
{
"_id" : ObjectId("53906c6254f36df504e99b8f"),
"title" : "my post"
"comments" : [
{
"author" : "foo",
"comment" : "foo comment"
},
{
"author" : "bar",
"comment" : "bar comment"
}
],
"createdAt" : ISODate("2014-06-05T13:10:58.365Z"),
"updatedAt" : ISODate("2014-06-05T13:10:58.365Z")
}
por exemplo, preciso extrair o comments
do autor foo
.
Aparentemente o Sails ainda não suporta esse recurso, então eu estava pensando em usar o objeto db
de nativo do mongodb para fazer esse tipo de consulta.
Como o Sails-Mongo usa o mongodb-native, posso ter acesso ao objeto db no meu projeto Sails?Ou precisarei construir uma nova conexão usando mongodb-native?
Se alguém tiver uma idéia melhor eu ficaria grato.Obrigado
Solução
Se tudo que você precisa fazer é acesso os comentários incorporados, Waterline deve funcionar bem.Basta fazer um normal find
ou findOne
, e os comentários devem estar acessíveis nos objetos retornados.
Se você precisar consulta os comentários, por ex.para encontrar postagens com comentários de um determinado autor, você pode acessar o subjacente mongodb-native
coleta usando o .native()
método da sua classe de modelo Sails:
Post.native(function(err, collection) {
if (err) {
// handle error getting mongo collection
}
collection.find({'comments.author':'foo'}).toArray(function(err, results) {
// Do something with results
});
});