node.js - DynamoDB 与 NodeJS - 获取 ID 不等于第一个查询结果的元素列表
问题描述
我目前正在使用 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 列表作为参数传递?
谢谢
解决方案
如果我的问题正确,这意味着您想要用户对象,但习惯被过滤为不是 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
}
推荐阅读
- python - TypeError:'DataFrame' 对象不可调用
- r - ggplot2中的多行标签
- python - 从整数列 PySpark 中删除字母
- android - 在 android 11(sdk 30) 中,如何从下载文件夹上传 pdf 文件?我收到权限被拒绝的 EACCES 消息
- visual-studio-code - 如何隐藏 Visual Studio Code 自动完成的某些建议?
- python - 如何从列中的列表中获取字典值?
- c# - C#- 如何在没有 URI 属性的情况下签署证书 XML 文档
标签? - grails - Grails 测试应用程序尝试插入更新的表而不是更新它们
- gdb - 如何让 avr-gdb 在启动时自动连接到远程目标?
- javascript - 无法使用 webpack 配置访问公共文件夹中的图像