
[英]node.js console app code to manage Azure Cosmos db tutorial code throwing error as undefined
[英]DynamoDB throwing undefined values error despite being able to write to DB using different array to PUT to DB
我有一个方法调用具有以下架构的表:userId: string | sessionId: 字符串 | orders: list 下面是代码:
const marshallOptions = {
convertEmptyValues: false,
removeUndefinedValues: false,
convertClassInstanceToMap: false,
};
const unmarshallOptions = {
wrapNumbers: false,
};
const translateConfig = { marshallOptions, unmarshallOptions };
const client: DynamoDBClient = new DynamoDBClient({});
const dynamo: DynamoDBDocument = DynamoDBDocument.from(client, translateConfig);
async function handleOrder(event: APIGatewayProxyEventV2): Promise<string> {
let req: any = JSON.parse(String(event?.body));
// Get student's orders
let studentOrderSubmissions: any = await dynamo.send(new GetCommand({
TableName: orderBook,
Key: {
userId: req.userId,
sessionId: sessionIdPlaceholder
}
}))
let studentOrders: any = studentOrderSubmissions.Item?.orders;
const orderInfo: OrderInfo = {
orderNumber: req.orderNumber,
userId: req.userId,
price: req.price,
position: req.position,
isLong: req.isLong,
isBuy: req.isBuy,
quantity: req.quantity,
closedOut: req.closedOut
}
studentOrders.push(orderInfo);
const params = {
TableName: orderBook,
Item: {
userId: req.userId,
sessionId: req.sessionId,
orders: studentOrders
}
};
await dynamo.put(params, function(err: any, data: any) {
if (err) {
console.log("Error", err);
}
else {
console.log("Success", data);
}
});
在修改 studentOrders 数组以将新的学生订单推入其中时,在尝试将更改放入 DynamoDb 到 OrderBook 表中后,我总是收到以下错误: Pass options.removeUndefinedValues=true to remove undefined values from map/array/set.
即使在将 marshall options.removeUndefinedValues 设置为 false 之后(尽管它默认为 false)。
当我使用以下代码创建一个新数组时:
const testArray: any = [];
testArray.push(orderInfo);
并将 studentOrders 替换为 testArray,DynamoDB 会保存数据并且不会抛出错误。 这是因为 DynamoDB 不允许您从自身传入数组吗? 那么如何更新表中的列表属性呢? 如果我不能使用put
或PutCommand
这会给我留下查询选项并编写一个新查询,但我想我会先询问更有经验的人是否遇到过这个问题。
找出问题所在。 我的 object 不是未定义的。 未定义的是我的排序键。 它抛出了一个错误,让我知道我传递给参数的值之一是未定义的,但没有告诉我具体是哪一个:话虽如此,错误在这里:
Item: {
userId: req.userId,
sessionId: req.sessionId,
orders: studentOrders
}
我从未定义过 req.sessionId,所以这就是导致异常的原因。 它真的应该是 cannot pass undefined KEY 而不是仅仅说你不能传递一个未定义的值。
问题未解决?试试以下方法:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.