【发布时间】:2014-09-27 18:27:16
【问题描述】:
我有一个控制器,其中有许多服务。在某些情况下,我想从另一项服务中调用一项服务。像这样的:
@service.json
@service.jsonrpc
def addme(text,localeid=1):
return db.mes.insert(me=text,locale=localeid)
@service.json
@service.jsonrpc
def addexmelink(exidentifier,metext):
meidentifier=addme(metext)
return db.exmelinker.insert(meid=meidentifier,exid=exidentifier)
我试过了,但它不起作用。我收到此错误:TypeError: 'NoneType' object is not callable。但我也观察到addme 被调用并且记录被插入,但它返回数据类型为Reference 的数据,这导致了一些问题。
请帮我解决这个问题。
【问题讨论】:
-
您能解释一下您是如何调用这些函数的以及发生了什么(例如,是否有异常)?
-
@Anthony:我刚刚编辑了问题以包含原始服务代码。
-
你能显示完整的回溯吗?如果你这样做
db.exmelinker.insert(meid=long(meidentifier), exid=exidentifier)会发生什么?如果您从 shell 而不是通过 RPC 调用这些函数,它会起作用吗? -
@Anthony:当我这样做时它起作用了:return long(db.exmelinker.insert(meid=meidentifier,exid=exidentifier))
-
我明白了,问题在于
addexmelink返回的是Reference,而不是addme。无论如何,我认为这不应该是一个问题——Reference对象不应该对 JSON 序列化程序造成任何问题。我仍然有兴趣查看完整的回溯(以及调用它的方法)以了解发生了什么。
标签: web2py