我正在尝试在dynamodb(使用dyamomode)中创建一个记录。代码是
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”:“条件请求失败”,“代码”:“ 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) }, {});
} };
我尝试使用Google搜索,但是没有找到任何合适的文档。 预先感谢。
答案 0 :(得分:0)
默认情况下,在Dynamoose中,使用Model.create
方法检查表中是否已存在主键。
所以你的错误:
{"message":"The conditional request failed", "code":"ConditionalCheckFailedException", "statusCode":400}
指示表中已经存在主键。因此,您正在尝试创建重复项。
在documentation中,有一个options属性,可用于允许覆盖该对象。
例如,以下代码将允许覆盖:
const res = await this.table.create(userData, {overwrite: true});