gpt4 book ai didi

mobile - 查询对象 where 函数过滤器

转载 作者:行者123 更新时间:2023-12-02 07:31:59 25 4
gpt4 key购买 nike

我正在尝试在 Azure 层中实现我的业务逻辑,但我只是不掌握插入上的这种 Node.js 脚本风格。

我有适用于此的 T-SQL

declare @latitude decimal(23,20)
declare @longitude decimal(23,20)
declare @timeStamp datetime

set @latitude = 37.7858340000000012537
set @longitude = -122.4064170000000046911
set @timeStamp = '2012-12-25 02:58:23'

select longitude, latitude, userid
from blah.actions ba
where
(
datediff(second, ba.TimeStamp, @timeStamp) < 5 and
(ba.longitude - 0.0001 <= @longitude and ba.longitude + 0.0001 >= @longitude) and
(ba.latitude - 0.0001 <= latitude and ba.latitude + 0.0001 >= latitude)
)

问题是,如何使用函数在插入时的 Azure 脚本中过滤表查询?

还有一点工作要做。我想出了如何使用函数进行过滤(但我仍在努力解决如何调试 Azure 脚本的问题)。我的插入内容中有以下内容。我让它“正常工作”,事实上我不再收到“内部服务器错误”,但我不知道如何记录结果或查看它们(非常感谢有关此 Azure 内容的任何提示)。我开始意识到我还需要在这个应用程序上做多少工作。

function dateDiff(date1, date2) 
{
return date1.getTime() - date2.getTime() / 1000;
}

function insert(item, user, request) {

request.execute();

var actionsTable = tables.getTable('BlahActions');

actionsTable.where(function(currentLat, currentLon, currentTime)
{
return (this.Latitude - 0.0001 <= currentLat && this.Latitude + 0.0001 >= currentLat) &&
(this.Longitude - 0.0001 <= currentLon && this.Longitude + 0.0001 >= currentLon) &&
(this.TimeStamp == currentTime);
//(dateDiff(this.TimeStamp, currentTime) <= 5);
}, item.Latitude, item.Longitude, item.TimeStamp)
.read(
{
success:function(results)
{
}
});
}

上述脚本的问题是使用 getTime() 时 Azure 会出现呕吐现象。我需要获取所有接近相同纬度和经度并且在过去 X 秒内发生的条目(是的,本质上重新发明了“凹凸”)。这就是我目前陷入困境的地方。当/如果我通过了这一部分,我会更新。

最佳答案

这里吸取了一些教训。首先也是最重要的,可以通过移动服务根目录顶部的菜单查看日志文件,其中显示“LOGS”...#epicFacePalm。其次,现在我可以看到实际的错误消息,而不是 XCode IDE 中的通用内容

  • where 方法的谓词内的 return 语句必须只进行简单的比较——你不能调用另一个方法并检查条件语句中的返回值——这让我感到恶心。
  • 另一个技术细节是将我的 TimeStamp 列从 DateTime 更改为 double - 完全简化了时间戳的减法,无需进行转换 - 简单

话虽如此,我现在在 where 方法中有这个

    actionsTable.where(function(currentLat, currentLon, currentTime)
{
return (this.Latitude - 0.0001 <= currentLat && this.Latitude + 0.0001 >= currentLat) &&
(this.Longitude - 0.0001 <= currentLon && this.Longitude + 0.0001 >= currentLon) &&
(currentTime - this.TimeStamp <= 5);
}, item.Latitude, item.Longitude, item.TimeStamp)

在成功回调中过滤结果之前过滤结果

.read(
{
success:function(results)
{
for (var i = 0; i < results.length; i++)
{
var obj = results[i];

for(var key in obj)
{
if (key === "id" &&
distance(obj.Longitude, obj.Latitude, item.Longitude, item.Latitude) < 30)
{
}
}
}
}
}

整个语法清晰

function insert(item, user, request) {
request.execute();

var actionsTable = tables.getTable('blahActions');
console.log("Inserting new action '%j'", item);

actionsTable.where(function(currentLat, currentLon, currentTime)
{
return (this.Latitude - 0.0001 <= currentLat && this.Latitude + 0.0001 >= currentLat) &&
(this.Longitude - 0.0001 <= currentLon && this.Longitude + 0.0001 >= currentLon) &&
(currentTime - this.TimeStamp <= 5);
}, item.Latitude, item.Longitude, item.TimeStamp)
.read(
{
success:function(results)
{
for (var i = 0; i < results.length; i++)
{
var obj = results[i];

for(var key in obj)
{
if (key === "id" &&
distance(obj.Longitude, obj.Latitude, item.Longitude, item.Latitude) < 30)
{
}
}
}
}
});

}

关于mobile - 查询对象 where 函数过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14044029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com