我正在尝试为架构A中的文档创建 $(document).ready(function(){
var total = 0;
var quantity = parseInt($('.quantity').val());
var unitprice = parseFloat($('.unitprice').val());
var vat_percentage = parseFloat($('.vat_percentage').val());
total = (quantity * unitprice) * vat_percentage;
$('.total').closest('.total').text(total);
});
事件挂钩,将前夕的on_insert
调用到架构B中的文档。
由于触发事件挂钩的请求对于A是patch_internal
,因此在烧瓶请求中没有POST
标头和必要的B If-Match
。
我试图在etag
patch_internal
之前设置烧瓶请求的值,但似乎不可能,因为它是冻结的。
如何为flask.request.if_match
电话设置etag
?
总之,文档的创建会更新具有不同模式的其他文档。我可以这样做吗?
感谢。
答案 0 :(得分:2)
您可以在致电concurrency_check=False
patch_internal
from eve.methods.patch import patch_internal
with app.request_context():
payload = {"value_key": "new value"}
lookup = {"_id": "12ababa12..."}
patch_internal("res_name", payload, **lookup, concurrency_check=False)
答案 1 :(得分:0)
不能说这是最好的方式,但它确实有效。
创建新的请求上下文以调用patch_internal
,并在用于创建它的etag
上设置environ
。下面是一个例子:
from flask import request, current_app
from eve.methods.patch import patch_internal
...
new_environ = request.environ
new_env['HTTP_IF_MATCH'] = patched_document['_etag']
with current_app.request_context(new_env):
result = patch_internal('my_document_b', {'updated_key': value}, {'_id': my_document_b['_id']})
...