如何在 Azure 函数中使用 Azure 存储表?

恐怕这可能是我完全误解异步工作方式的一个简单案例。


我正在使用 NPM 模块 azure-storage。我遇到的问题是该函数似乎在执行回调之前完成。更糟糕的是,Azure Functions 有一些神奇之处,你可以通过设置context.res属性来“完成”你的函数。


他们曾经要求你打电话,context.done()但有些东西从 v1 变成了 v2,现在我想不再是那样了。但是,即使是这种情况,函数也会在回调执行之前结束。


更糟糕的是,我的实体甚至没有被插入,但我不知道为什么。


var azure = require('azure-storage');

var validate = require('validate.js');


var constraints = {

    PartitionKey: {

        presence: true,

        email: true

    },

    description: {

        presence: true

    },

    dueDate: {

        presence: true

    }

};


module.exports = async function (context, req) {

    context.log('JavaScript HTTP trigger function processed a request.');


    if (!(req.body && req.body.PartitionKey)

        || !(req.body && req.body.description)

        || !(req.body && req.body.dueDate)) {

        context.res = {

            status: 400,

            body: "Please pass a name on the query string or in the request body"

        };

    }


    var tableSvc = azure.createTableService();

    var input = req.body;


    context.log('PartitionKey: ' + input.PartitionKey);

    context.log('description: ' + input.description);

    context.log('dueDate: ' + input.dueDate);


    context.log(validate({ PartitionKey: input.PartitionKey }, constraints));

    context.log(validate({ description: input.description }, constraints));

    context.log(validate({ dueDate: input.dueDate }, constraints));


    var entGen = azure.TableUtilities.entityGenerator;

    var task = {

        PartitionKey: entGen.String(input.PartitionKey),

        RowKey: entGen.String('1'),

        description: entGen.String(input.description),

        dueDate: entGen.DateTime(input.dueDate)

    };  

           };

        }

    });

};


米脂
浏览 137回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript