Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Azure函数中从Azure SQL数据库获取数据_Javascript_Azure_Azure Functions_Azure Sql Database - Fatal编程技术网

Javascript 在Azure函数中从Azure SQL数据库获取数据

Javascript 在Azure函数中从Azure SQL数据库获取数据,javascript,azure,azure-functions,azure-sql-database,Javascript,Azure,Azure Functions,Azure Sql Database,我从AZURE SQL数据库获取数据时遇到问题。我的代码确实获得了数据,但不是全部。其目的是该函数需要接收年龄为X(f.ex.:20)的所有用户,并返回一个包含这些用户的数组。现在代码只返回它在数据库中找到的第一个用户。我使用Azure函数来测试结果。 以下是从数据库获取数据的函数: function testfunc(age){ return new Promise ((resolve, reject) =>{ let result = []; c

我从AZURE SQL数据库获取数据时遇到问题。我的代码确实获得了数据,但不是全部。其目的是该函数需要接收年龄为X(f.ex.:20)的所有用户,并返回一个包含这些用户的数组。现在代码只返回它在数据库中找到的第一个用户。我使用Azure函数来测试结果。 以下是从数据库获取数据的函数:

function testfunc(age){
    return new Promise ((resolve, reject) =>{
        let result = [];
        const sql = 'SELECT * FROM [datingschema].[user] where age = @age'
        const request = new Request(sql, function(err){
            if (err){
                console.log("beforeerr");
                console.log(err) //ingen err - så det godt nok!
                console.log("aftererr");
                reject(err);
            }
        })
        request.addParameter('age', TYPES.Int, age)
        request.on('row', (columns) => {
            columns.forEach(column =>{

                result.push(column.value)
            })
            resolve(result)
        });
        
    
        connection.execSql(request)
    })
}
下面是我在Azure函数中调用函数的部分代码。应该没有错误,因为当我只需要获得一个用户时,它可以正常工作:

const db = require('../database/db');


module.exports = async function (context, req) {
    context.log('JavaScript HTTP trigger function processed a request.')

    try {
        await db.startDb(); //start db connection
    } catch (error) {
        console.log("Error connecting to the database", error.message)
    }
    switch (req.method) {
        case 'GET':
            await get(context, req);
            break;
        case 'POST':
            await post(context, req);
            break
        default:
            context.res = {
                body: "Please get or post"
        };
            break
    }
}

async function get(context, req){
    try{
        let id = req.query.age
        let user = await db.testfunc(id)
        context.res = {
            body: user
        };
    } catch(error){
        context.res = {
            status: 400,
            body: `No User - ${error.message}`
        }
    }
}

发生错误的原因是,您在阅读第一行之后解析了您的承诺。考虑以下事项:


function testfunc(age){
    return new Promise ((resolve, reject) =>{
        let result = [];
        const sql = 'SELECT * FROM [datingschema].[user] where age = @age'
        const request = new Request(sql, function(err){
            if (err){
                console.log("beforeerr");
                console.log(err) //ingen err - så det godt nok!
                console.log("aftererr");
                reject(err);
            }
        })
        request.addParameter('age', TYPES.Int, age)

        // This is executed multiple times, once for each row
        request.on('row', (columns) => {
            let row = []

            // Accumulate the columns to a row
            columns.forEach(column =>{
                row.push(column.value)
            })

            // Don't resolve here. Instead append to result..
            // resolve(result)
            result.push(row)
        });

        // This is executed once, when the query has completed
        request.on('done', () => {
            // .. and resolve here
            resolve(result)
        })
    
        connection.execSql(request)
    })
}


忘了说问题应该与“request.on”部分中的“testfunc”函数有关。我只是不知道如何修复它。你能检查一下你的数据库是否有一些同龄的用户吗?Jim Xu,是的。至少3或4个。我还尝试使用其他价值观,如“性别”。SQL查询在DB控制台中工作,因此问题不应该出现在那里!!非常感谢你的帮助!