var Promise = require('bluebird');
var userQueryAsync = Promise.promisify(Article.query);
userQueryAsync("SELECT article.slug, article.title, __user.name AS user___name, __user.phone AS user___phone FROM article JOIN user AS __user ON __user.id = article.user")
.then(function(article) {
var parsed = new Article._model(article);
console.log(parsed);
});
由于Sails中的原始查询,我想创建模型对象。
我使用上面代码检索的数据是:
{ '0':
{
slug: 'article-1',
title: 'Article 1',
user: 1,
user___name: 'Cainzer',
user___phone: '0000000'
}
}
我希望:
{ '0':
{
slug: 'article-1',
title: 'Article 1',
user: {
name: 'Cainzer',
phone: '0000000'
}
}
}
有没有办法在没有循环的情况下完成?
我知道我可以使用Article.find()。populate(" user")轻松完成,但我向您展示了一个简单的示例,使其工作并在更棘手的情况。 我被迫使用原始查询,因为Waterline在使用MySQL的populate()中没有实现WHERE子句。