如何正确读取表存储绑定的数据?

我有一个节点函数接收来自内部API的请求,做一些属性分配,并吐出一个JSON响应。 最初,我用一堆硬编码的常量来设置它,但是我们决定将这些值移到一个存储表中,这样我们就不必在函数本身中改变这些值,如果我们需要提高价格在未来。 我按照创build一个存储表的文档,填充它,并configuration我的function绑定到它。 据我所知,我正确地调用它,但我得到一个“TypeError:无法读取属性x”。 这是我的function.js看起来像:

{ "bindings": [ { "authLevel": "function", "type": "httpTrigger", "direction": "in", "name": "req", "methods": [ "GET" ] }, { "type": "http", "direction": "out", "name": "res" }, { "type": "table", "name": "rate", "tableName": "Rates", "partitionKey": "Production", "rowKey": "Standard", "connection": "{TABLE_CONNECTION_STRING}", "direction": "in" } ], "disabled": false } 

而我的index.js看起来像这样:

 module.exports = function (context, req) { context.log('Processing mailing'); if (req.query.number_of_pages && req.query.delivery_country) { const first_page_special_domestic = context.bindings.rate.first_page_special_domestic; const addtl_page_special_domestic = context.bindings.rate.addtl_page_special_domestic; const express_domestic = context.bindings.rate.express_domestic; const certified = context.bindings.rate.certified; const tracking = context.bindings.rate.tracking; const registered = context.bindings.rate.registered; const return_envelope = context.bindings.rate.return_envelope; const first_page_special_international = context.bindings.rate.first_page_special_international; const addtl_page_special_international = context.bindings.rate.addtl_page_special_international; const first_page_international = context.bindings.rate.first_page_international; const addtl_page_international = context.bindings.rate.addtl_page_international; const express_international_flat_rate = context.bindings.rate.express_international_flat_rate; var number_of_pages = req.query.number_of_pages; var delivery_country = req.query.delivery_country; var flat_cost = 0.0; var per_page_cost = 0.0; var cost = 0.0; var tax = 0.0; var discount = 0.0; var first_page_domestic = context.bindings.rate.first_page_domestic; var addtl_page_domestic = context.bindings.rate.addtl_page_domestic; if (req.query.rate == 1) { first_page_domestic = context.bindings.rate.first_page_domestic_discount_one; addtl_page_domestic = context.bindings.rate.addtl_page_domestic_discount_one; } else if (req.query.rate == 2) { first_page_domestic = context.bindings.rate.first_page_domestic_discount_two; addtl_page_domestic = context.bindings.rate.addtl_page_domestic_discount_two; } if (delivery_country == "US") { if (req.query.special_paper) { flat_cost = first_page_special_domestic; per_page_cost = addtl_page_special_domestic; } else { flat_cost = first_page_domestic; per_page_cost = addtl_page_domestic; } if (req.query.tracking) flat_cost += tracking; if (req.query.certified) flat_cost += certified; if (req.query.registered) flat_cost += registered; if (req.query.express) flat_cost += express_domestic; if (req.query.return_envelope) flat_cost += return_envelope; } else { if (req.query.special_paper) { flat_cost = first_page_special_international; per_page_cost = addtl_page_special_international; } else { flat_cost = first_page_international; per_page_cost = addtl_page_international; } if (req.query.express) flat_cost += express_international_flat_rate; if (req.query.return_envelope) flat_cost += return_envelope; } if (number_of_pages > 1) { cost = ((number_of_pages - 1) * per_page_cost) + flat_cost; } else { cost = flat_cost; } cost = cost.toFixed(2); if (req.query.state_tax == "true" && delivery_country == "US") { tax = 0.095; } context.res = { status: 200, body: { "cost": cost, "tax": tax } }; } else { context.res = { status: 421, body: "Unprocessable Entity" }; } context.done(); }; 

错误消息是指第一个被声明的常量,first_page_special_domestic。 我的感觉是,我以某种方式错误地configuration了它,在我的function.js。 任何帮助,将不胜感激!

基本上,你可以使用rate作为函数参数来获得这些值。

请更改您的代码如下:

 module.exports = function (context, req, rate) { context.log('Processing mailing'); if (req.query.number_of_pages && req.query.delivery_country) { const first_page_special_domestic = rate.first_page_special_domestic; //... } else { //... } context.done(); };