我目前正在使用NodeJS学习DynamoDB。我正在做一个具有参数'userId'的函数。
我将查询dynamoDB并使用参数'userId'将该用户指定为该用户,
这是我获取用户的查询:
let params = {
TableName: 'user',
KeyConditionExpression: "#id = :userId",
ExpressionAttributeNames:{
"#id": "id"
},
ExpressionAttributeValues: {
":userId": userId
}
};
docClient.query(params, function (err, data) {
if (err) {
res.send({
success: false,
message: err.message
});
} else {
const {Items} = data;
if (Items.length === 0) {
res.send(null)
}
else res.send(Items);
}
});
这是找到用户时的查询结果:
[{
"firstname": "test",
"lastname": "test",
"password": "test",
"id": "1750",
"email": "test@test.com",
"habitsList": [
{
id: 10
},
{
id: 12
}
]
}]
因此,在dynamo找到用户之后,我希望它获得ID不等于“ 10”和“ 12”的所有习惯。
我可以对查询/参数进行一些更改吗?还是我绝对必须通过IDS列表作为参数传递另一个查询?
谢谢
答案 0 :(得分:0)
如果我正确地回答了您的问题,则意味着您需要用户对象,但习惯被过滤为非id = 10或12。如果是这种情况,我认为在查询后过滤习惯会更容易。
for(var i = 0; i < Items.length; i++){
var filteredHabits = Items[i].habitsList.filter(h => h.id !== 10 && h.id !== 12);
var Items[i].habitsList = filteredHabits; //this will replace the current habitList to filteredHabit
}