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

Foi útil?

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
    });
});
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top