Javascript 从外部节点进程连接到Azure Web App/SQL数据库

Javascript 从外部节点进程连接到Azure Web App/SQL数据库,javascript,node.js,azure,azure-sql-database,azure-web-app-service,Javascript,Node.js,Azure,Azure Sql Database,Azure Web App Service,我有一个正在运行的Azure Web应用程序,它定义了自定义的Easy API和一些Easy表。在过去的一年里,我一直在使用这个Azure Web应用程序和连接到它的SQL表来运行一些基于javascript的LOB Windows应用商店应用程序,它运行得非常好 但是现在我需要访问Node.js进程的这些资源,我将在本地运行。我想以与在Windows应用商店应用程序中访问它几乎相同的方式访问它: var client = new window.WindowsAzure.MobileServic

我有一个正在运行的Azure Web应用程序,它定义了自定义的Easy API和一些Easy表。在过去的一年里,我一直在使用这个Azure Web应用程序和连接到它的SQL表来运行一些基于javascript的LOB Windows应用商店应用程序,它运行得非常好

但是现在我需要访问Node.js进程的这些资源,我将在本地运行。我想以与在Windows应用商店应用程序中访问它几乎相同的方式访问它:

var client = new window.WindowsAzure.MobileServiceClient(
      "https://my-mobileservice.azure-mobile.net/",
      "MOBILESERVICEKEY"
);
如果我不能从节点内使用上面提供的相同API访问Web应用程序,那么只要我可以手动读取和写入SQL表中的行就足够了


那么我该怎么做呢?

您提供的代码片段使用的是Azure Mobile Apps客户端SDK,该SDK适用于设备或浏览器

在您的其他No.js应用程序中,您可以考虑对易用表和简单API脚本实现HTTP请求。Azure移动应用服务将其公开为RESTful API。有关更多信息,请参阅

您可以参考下面的代码片段以获取信息

var request = require("request");
request({
    method:'GET',
    url:'https://<your_mobile_app>.azurewebsites.net/tables/TodoItem',
    headers:{
        'ZUMO-API-VERSION':'2.0.0'
    }
},(err,res,body)=>{
    console.log(body);
})
var请求=要求(“请求”);
请求({
方法:'GET',
网址:'https://.azurewebsites.net/tables/TodoItem',
标题:{
“ZUMO-API-VERSION”:“2.0.0”
}
},(错误、恢复、正文)=>{
控制台日志(主体);
})

因此,任何移动服务api或任何web api都应该可以通过互联网访问。因此,您应该能够从内部部署的node js应用程序中使用它们。这同样适用于SQLAzure表。为此,您当然需要添加防火墙规则,以允许来自您运行节点代码的框的流量。@Aravind我不太确定如何以这种方式使用它。据我所知,这种访问方式是没有文件记录的。或者至少我还没有看到那个文档。@TKoL-什么是未记录的?Easy Tables只是表。@DavidMakogon好的,我不知道如何访问它们。谢谢Gary,我尝试了一下,但首先出现了错误:“此版本(1.0.0)的服务器不支持在请求中使用zumo api版本。有关详细信息和支持的客户端,请参阅:”所以我去了那个URL,我真的不知道该怎么处理它,但我认为它暗示了我应该删除ZUMO头,所以我删除了整个“头”部分,然后我得到了这个错误:“{”代码:401,“错误”:“错误:未经授权”}”我现在很困惑。这意味着你的移动应用程序受到身份验证提供商的保护。什么之中的一个。因此,您需要在node.js应用程序中进行身份验证,获取令牌,然后在标头中设置令牌。例如,如果你正在使用AAD保护你的移动应用程序,你可以利用它来应用令牌。@gary liu msft很抱歉我太过密集,我真的不知道从哪里开始。我觉得在我刚刚制作通用Windows应用商店应用程序时,使用Azure是如此简单,而现在却如此困难。当我查看我的Azure门户并找到我的应用程序服务时,我转到“身份验证/授权”,应用程序服务身份验证的设置处于关闭状态。也许我把这件事搞得太复杂了,让我来解释一下我的最终目标:我需要一个节点应用程序每30分钟运行一次,根据它(从Dynamics导航源)获得的新信息更新连接到我的应用程序服务的SQL表。@gary liu msft我考虑过可能在我的应用程序服务上尝试Node.js Web作业,但是,即使这样,我也找不到需要的文档来告诉我如何从节点中访问Easy表WebJob@gary-liu msft所以我所做的是:我在我的Web应用数据库上创建了一个新表,我将表上的权限保留为“任何人”,用于插入、更新、删除和读取。当我将权限保留为“anywhere”并删除您的ZUMO-API头时,显然可以非常轻松地访问该表。但这似乎不是一个真正的安全意识很强的设置。我的其他表具有“具有访问密钥的任何人”权限。是否有一种方法可以使用Node.js中的访问密钥对服务器进行身份验证?