aws-如何使用用户的名字或姓氏中的用户字符来查询用户?

b4wnujal  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(417)

所以我有了这个应用程序,我正在尝试实现一个搜索栏,如果他们键入“jo”,我调用一个lambda函数,它从我的用户表中查询我的用户:“john smith”。我制作了一个findrivaltable,其中,对于每个创建的玩家,我创建2个对象。每个对象都有一个键:firsttwoletters,其中包含名字或姓氏的前两个字母。第二个键是具有用户id的用户的名字或姓氏。
我附上了一张下表的照片,以便更清楚地说明。我不知道如何在dynamodb查询中实现“beginswith”。我已经用javascript编写了查询代码的开始部分,但是需要帮助来完成它。它接受用户输入的字母作为输入,然后查询应该返回表中的两个对象,然后我可以从用户的表中查询用户。

var dynamodb = new AWS.DynamoDB.DocumentClient(); 
exports.handler = function(event, context, callback) 
{
    completeCount = 0;
    completeCeiling = 2;

    function findPlayer() 
    {
        var params = {
            TableName:"Z_DEV_findPlayerTable",
            Key:{
                "firstLetters": event.inputCharacters
            },
        };

        dynamodb.update(params, function(err, data) 
        { if (err) {
            console.log("break 1A")
                console.log(err, "findPLayer error");
                callback(err);
            } else {
                console.log("break 1B");
                completeCount++;
                if (completeCount === completeCeiling) {
                    //cool we have the player! Now lets do a second 
                      query from the user's table from the ID we just got
                }

            }
        });
    }   

};

rdlzhqv9

rdlzhqv91#

我想出来了!这是语法:
当数据库中有多个john smiths时,用户为jo smith键入“jo”。你需要传入两个变量。
答。他们打字的前两个字母。
b。他们键入的全部字符串。

exports.handler = function(event, context, callback) 
{
    completeCount = 0;
    completeCeiling = 1;

    var returnArray = {
    }

    findPlayer();

    function findPlayer() 
    {
        var params = 
        {
            TableName : "Z_DEV_findPlayerTable",
            KeyConditions: 
            {
                "firstLetters": {
                    ComparisonOperator: 'EQ',
                    AttributeValueList: [
                        event.first2Letters ]
                },
                "firstOrLastName": 
                {
                    ComparisonOperator: 'BEGINS_WITH',
                    AttributeValueList: [
                        event.currentTypedLetters ]
                }
            },
        };

        dynamodb.query(params, function(err, data) 
        { if (err) {
            console.log("break 1A")
                console.log(err, "findPLayer error");
                callback(err);
            } else {
                console.log("break 1B");
                console.log("my data is", data.Items);
                var folderKeys = Object.keys(data.Items);
                completeCeiling = folderKeys.length;
                for(i = 0; i < folderKeys.length; i++)
                {
                    var filteredPlayer = JSON.stringify(data.Items[folderKeys[i]].firstOrLastName);
                    var splitString = filteredPlayer.split('+');
                    var filteredID = splitString[1];
                    filteredID = filteredID.replace(/['"]+/g, '')

                    console.log("my filteredPlayer is ", filteredPlayer);
                    console.log("my filteredID2 is ", filteredID);
                    getPlayer(filteredID);
                }

            }
        });
    }

     function getPlayer(playerID) {

        var params = {
            TableName : "Z_DEV_playerTable",
            Key: {
                "playerID": playerID
            },
        };
        dynamodb.get(params, function(err, data)
            { if (err) {
                console.log(err);
                console.log("break 2A");
            } else 
            {
                console.log("break 2B");
                //console.log("my data.Item is ",data.Item)
                if(data.Item != undefined)
                {
                    returnArray[playerID] = data.Item
                    completeCount++;
                    console.log("completeCount is " + completeCount);
                    if (completeCount === completeCeiling) 
                    {
                        callback(null, JSON.stringify(returnArray)); 
                    }
                }
                else
                {
                    console.log("player doesn't exist");
                }
            }
        });   
    }
};

相关问题