说我在hasura实例中有一个表items
,可以通过自动hasura api向其中添加数据。假设我有一个突变insert_items_one
。此外,假设项目插入在某些情况下可能会失败。为此,假设我有一个像这样的触发器:
CREATE FUNCTION check_item_insertion() RETURNS trigger AS $emp_stamp$
BEGIN
IF my_condition_on_new_item_insertion THEN
RAISE EXCEPTION 'My clear explanation on what happened';
END IF;
RETURN NEW;
END;
$emp_stamp$ LANGUAGE plpgsql;
CREATE TRIGGER check_item_insertion_trigger BEFORE INSERT OR UPDATE ON items FOR EACH ROW EXECUTE PROCEDURE check_item_insertion();
现在,如果我尝试在insert_items_one
为真的情况下使用my_condition_on_new_item_insertion
插入新项目,那么hasura会回复:
{'extensions': {'path': '$.selectionSet.insert_items_one.args.object', 'code': 'unexpected'}, 'message': 'database query error'}
这很具有欺骗性,因为我的异常消息非常清楚,并为api的客户端提供了有用的信息。如何将异常的消息传播回客户端?