所以我有这样的查询:
query selectOrder{
description: "Select an Order that matches a Client reference and an Order Number"
statement:
SELECT com.x.Order
WHERE (client == _$client AND orderNumber == _$orderNumber)
}
订单是这样的:
asset Order identified by uuid {
o String uuid
--> Client client
o String orderNumber
--> Item[] items
}
如何将对客户端的引用传递给查询?
我尝试了参考,并被告知toJSON它。 我试过了,它不会解析这个问题 - 解析查询时有一个明显的问题。
我在文档中找不到答案,所以我想知道是否有人这样做了,或者我是否必须保存客户端ID而不是对客户端的引用并失去完整性。
编辑:有关下面第一个答案的完整性。
我正在尝试将Item添加到Items数组中。 我的Item对象定义如下:
asset Item identified by uuid {
o String uuid
o DateTime timestamp
o String orderNumber
--> Client client
o String[] message
}
调用事务时,传入的单个对象是Item。 我将Item.client设置为查询中的_ $ client值。
我应该使用“资源:”预先挂起吗? 我问,因为我认为那已经在参考字符串中 - 至少它是在操场上的视图中。
EDIT2: 所以我手动构造以下变量:
var RSRC = 'resource:com.x.Client#XYZ123'
将其设置为此查询中的客户端
return query('selectOrder', {agency : RSRC, orderNumber : orderNumber});
但我还是得到了这个:
错误:未知运算符“0” - 应该是$ eq,$ lte,$ lt,$ gt之一, $ gte,$ exists,$ ne,$ in,$ nin,$ size,$ mod,$ regex,$ elemMatch,$ type 或$ all
下一步是什么? 在引号中嵌入“resource ...”字符串也不起作用。
答案 0 :(得分:1)
您的查询看起来没问题,但您需要传递一个格式为的字符串:
resource:type.Name#instance
关系。
E.g。 resource:org.acme.Car#123ABC