【发布时间】:2018-12-18 05:28:22
【问题描述】:
我正在尝试在 dynamodb(使用 dynamoose)中创建记录。代码是
class Test {
constructor() {
this.table = dynamoose.model(tableName, tableSchema);
}
// userdata object - {
// cusotmerEmail: 'tushar.gaurav+testf40@accionlabs.com',
// customerBusinessName: 'DoogleDnd',
// customerFirstName: 'Tushar',
// customerId: 101211,
// customerLastName: 'Gaurav',
// isDeleted: false,
// sku: '100',
// userId: '5c1776e94bea867c3f896236'
// }
async createUser(userData) {
try {
const res = await this.table.create(userData);
console.log('Update user record - ', res);
return res;
} catch (error) {
throw new Error(error);
}
}
}
*create 函数的输入值与我尝试使用 batchPut() 的相同输入是正确的,它正在工作。 甚至更新对表的调用也可以正常工作。
async updateUser(userData) {
try {
const res = await this.table.update(userData);
console.log('Updated user record - ', res);
return res;
} catch (error) {
throw new Error(error);
}
}
这是我得到的错误 - 错误 - {"message":"条件请求失败", "code":"ConditionalCheckFailedException", "statusCode":400}
这是调用函数 -
module.exports.subscribeUser = async (event) => {
let inputBody = (typeof event.body === 'object' ? event.body :
JSON.parse(event.body));
inputBody.userId = event.pathParameters.id;
try {
// Validate input
await asisvc.validateInput(inputBody);
inputBody = await UserSvc.constructUserObject(inputBody);
console.log('Constructed object - ', JSON.stringify(inputBody));
const userData = await testObj.createUser(inputBody);
return Utils.buildResp(codes.ok, { userData }, {});
} catch (error) {
console.log(error);
return Utils.buildResp(codes.badrequest, { Error:
Utils.getErrString(error) }, {});
} };
我尝试用谷歌搜索它,但没有找到任何合适的文档。 提前致谢。
【问题讨论】:
-
您能否也显示调用这些函数的代码并编写预期输出和实际发生的情况?
-
可能不相关,但你知道 a) 如果你实际上没有对它做任何其他事情,那么捕获和重新抛出你的错误没有任何好处,并且 b) Error 构造函数需要一个字符串message 作为它的第一个参数,而不是一个对象。
-
另外,你得到了什么实际错误?
-
@libik 编辑了问题,请看一下。
标签: node.js async-await aws-lambda amazon-dynamodb dynamoose