1
我有一個節點函數,它接收來自內部API的請求,做一些屬性分配,並吐出一個JSON響應。最初,我用一堆硬編碼常量進行設置,但我們決定將這些值移到存儲表中,以便我們不必更改函數本身的值,如果我們需要提高我們的值價格在未來。我按照創建存儲表的文檔,填充它,並配置我的函數來綁定它。據我所知,我正確地調用它,但我得到一個「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();
};
錯誤消息指的是第一個const聲明,first_page_special_domestic。我的感覺是,我已經以某種方式錯誤地配置了它,在我的function.js中。任何幫助,將不勝感激!
你有什麼更新? –