在我的Sails.js中,我有一个名为Invoices.js的模型,其结构如下:
module.exports = {
tableName:'invoices',
adapter: 'mysql',
autoPK:false,
autoCreatedAt: true,
autoUpdatedAt: true,
attributes: {
id: {type: 'integer', autoIncrement: true, primaryKey: true},
doc_mod: {type:'string'},
doc_n: {type:'integer'},
createdAt: {type:'date'},
updatedAt: {type:'date'},
settled: {type:'integer'},
invoice_line: {collection:'invoice_lines', via:'invoice'},
customer: {model:'customers'},
booking:{collection:'bookings',via:'invoice'}
}
}
我想从Angular.js查询“姓名”或“姓氏”的客户,在客户端我想出了这个:
.factory('PaymentsService',['$resource',function($resource){
return{
Query:function(cursor,sorting,name,surname){
var allPayments = $resource('http://localhost:1337/invoices');
return allPayments.query({populate:{'customers':{where:{or:[{name:{contains:name}},{surname:{contains:surname}}]}}},skip:cursor,limit:100,sort:sorting}).$promise;
}
}
它似乎无法正常工作我总是得到这个不完整和正确的结果:
.....{
"customer": 1,
"id": 4,
"doc_mod": "receipt",
"doc_n": 3,
"createdAt": "2015-05-11T17:07:40.000Z",
"updatedAt": "2015-05-11T17:07:40.000Z",
"settled": 0
},
{
"customer": 1,
"id": 5,
"doc_mod": "receipt",
"doc_n": 4,
"createdAt": "2015-05-11T18:26:55.000Z",
"updatedAt": "2015-05-11T18:26:55.000Z",
"settled": 0
}.....
答案 0 :(得分:1)
您目前无法以这种方式查询子文档。您需要撤消查询,以便过滤客户,然后返回关联的发票。它可能不是你想要的100%,但水线目前正在解决这个问题!
var allPayments = $resource('http://localhost:1337/customers');
allPayments.query({
where:{or:[{name:{contains:name}}, {surname:contains:surname}}]},
populate:'invoices',
skip:cursor,
limit:100,
sort:sorting
})
.$promise
答案 1 :(得分:0)
如果想要两个或更多填充
var allPayments = $resource('http://localhost:1337/customers');
allPayments.query({
where:{or:[{name:{contains:name}}, {surname:contains:surname}}]},
populate:['invoices','some_other_populate'],
skip:cursor,
limit:100,
sort:sorting
}).$promise;