Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.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
检查Azure函数(C#)中是否存在记录_C#_Azure_Azure Storage_Azure Functions_Azure Table Storage - Fatal编程技术网

检查Azure函数(C#)中是否存在记录

检查Azure函数(C#)中是否存在记录,c#,azure,azure-storage,azure-functions,azure-table-storage,C#,Azure,Azure Storage,Azure Functions,Azure Table Storage,在Azure函数中使用BindAsync添加记录之前,我试图弄清楚如何检查记录是否存在。有没有一种方法可以使用我现有的实现来实现这一点,或者我需要使用不同的方法 具体检查函数底部的“output”局部变量 [FunctionName("Signup")] public static async Task<IActionResult> Signup([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route ="user/signu

在Azure函数中使用BindAsync添加记录之前,我试图弄清楚如何检查记录是否存在。有没有一种方法可以使用我现有的实现来实现这一点,或者我需要使用不同的方法

具体检查函数底部的“output”局部变量

[FunctionName("Signup")]
public static async Task<IActionResult> Signup([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route ="user/signup")] HttpRequest Req, Binder binder, ILogger log)
{
    var UserId = System.Guid.NewGuid().ToString();
    var FirstName = Req.Form["FirstName"];
    var LastName = Req.Form["LastName"];
    string FbId = null;
    if (Req.Form.ContainsKey("FbId"))
    {
        FbId = Req.Form["FbId"];
    }
    var Email = Req.Form["Email"];
    var PasswordPlain = Req.Form["Password"];
    string hash;
    hash = BCrypt.Net.BCrypt.HashPassword(PasswordPlain);

    var ProfilePic = Req.Form.Files.GetFile("ProfilePic");
    var ProfilePicStream = ProfilePic.OpenReadStream();
    var ProfilePicFileName = await UploadImage(ProfilePicStream, UserId, binder);

    if (FbId == null)
    {
        log.LogInformation("No FB detected");
    }
    else
    {
        log.LogInformation("FB detected");
    }
    var NewUser = new UserTableEntity
    {
        PartitionKey = 1.ToString(),
        RowKey = UserId,
        FirstName = FirstName,
        LastName = LastName,
        FbId = FbId,
        Email = Email,
        ProfilePic = ProfilePicFileName,
        Password = hash
    };

    var attributes = new System.Attribute[]
    {
        new StorageAccountAttribute("TabbrDevCosmosDb"),
        new TableAttribute("Users")
    };

    var output = await binder.BindAsync<IAsyncCollector<UserTableEntity>>(attributes);
    await output.AddAsync(NewUser);
    return new OkObjectResult(JsonConvert.SerializeObject(NewUser));
}  
[函数名(“注册”)]
公共静态异步任务注册([HttpTrigger(AuthorizationLevel.Anonymous,“post”,Route=“user/Signup”)]HttpRequest请求、绑定器、ILogger日志)
{
var UserId=System.Guid.NewGuid().ToString();
var FirstName=Req.Form[“FirstName”];
var LastName=Req.Form[“LastName”];
字符串FbId=null;
if(要求表格ContainsKey(“FbId”))
{
FbId=要求表格[“FbId”];
}
var电子邮件=请求表格[“电子邮件”];
var PasswordPlain=Req.Form[“Password”];
字符串散列;
hash=BCrypt.Net.BCrypt.HashPassword(PasswordPlain);
var ProfilePic=Req.Form.Files.GetFile(“ProfilePic”);
var ProfilePicStream=ProfilePic.OpenReadStream();
var ProfilePicFileName=等待上载映像(ProfilePicStream、UserId、binder);
如果(FbId==null)
{
日志信息(“未检测到FB”);
}
其他的
{
日志信息(“FB检测”);
}
var NewUser=newusertableentity
{
PartitionKey=1.ToString(),
RowKey=UserId,
FirstName=FirstName,
LastName=LastName,
FbId=FbId,
电子邮件=电子邮件,
ProfilePic=ProfilePicFileName,
密码=散列
};
var attributes=新系统属性[]
{
新的StorageAccountAttribute(“TabbrDevCosmosDb”),
新的TableAttribute(“用户”)
};
var output=await binder.BindAsync(属性);
等待输出。AddAsync(NewUser);
返回新的OkObjectResult(JsonConvert.SerializeObject(NewUser));
}  

我们必须以一种基本的方式执行查询,以查找是否有重复的记录

添加声明性表输入绑定以便于查询

public static async Task<IActionResult> Signup(
    [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "user/signup")] HttpRequest Req, 
    [Table("Users", Connection = "TabbrDevCosmosDb")]CloudTable table, 
    Binder binder, ILogger log)

如果我的解决方案有效,你能接受它供其他人参考吗?问问你是否需要进一步的帮助。
TableQuery<UserTableEntity> existQuery = new TableQuery<UserTableEntity>().Where(
    TableQuery.GenerateFilterCondition("Email", QueryComparisons.Equal, Email));

var queryResult = table.ExecuteQuerySegmentedAsync(existQuery, null).Result.Results;

if (queryResult.Count == 0)
{
    var attributes = new System.Attribute[]
    {
        new StorageAccountAttribute("TabbrDevCosmosDb"),
        new TableAttribute("Users")
    };
    var output = await binder.BindAsync<IAsyncCollector<UserTableEntity>>(attributes);
    await output.AddAsync(NewUser);
    return new OkObjectResult(JsonConvert.SerializeObject(NewUser));
}
else
{
    return new BadRequestObjectResult("Already exists");
}