我是一个打字新手,我一直在尝试为DynamoDB创建一个DAO来将对象插入到表中。然而,当使用spread操作符时,它似乎会导致对象被拆分为单个字符。
我的方法只是简单地获取对象,通过spread操作符添加一些字段,然后将其插入表中。根据我的理解,这应该可以工作,但是你可以通过console.log()
在'itemToInsert'上的spread操作之前和之后看到,有些地方出错了。
- 方法 *
async createItem(item: FleetAccount): Promise<FleetAccount> {
console.log(item);
const itemToInsert: FleetAccount = {
...item,
id: generateUniqueKey("ACC"),
createdAt: new Date().toISOString(),
updatedAt: new Date().toISOString(),
};
console.log(itemToInsert);
try {
await this.docClient.send(new PutCommand({
TableName: this.tableName,
Item: itemToInsert,
ConditionExpression: 'attribute_not_exists(id)'
}));
} catch (e) {
if (e instanceof ConditionalCheckFailedException) { //Error when the item already exists.
return Promise.reject("Item with specified Id already exists.");
} else {
console.log("FAILURE!");
console.log(e);
return Promise.reject();
}
}
return itemToInsert;
}
字符串
接口/类型
export default interface FleetAccount {
id: string;
businessName:
businessAddress: string;
abn: string;
primaryContactId: string;
invoiceIds: Array<string>;
availableMerchants: Array<string>;
requireVehicleRegistration: boolean;
users: Array<string>;
createdAt:
updatedAt: string;
}
型
项目
{
"businessName": "Test Company",
"businessAddress": "123 Fake Street, Canberra, Australia, 2903",
"abn": "123456",
"primaryContactId": "FUI1234",
"invoiceIds": ["1"],
"availableMerchants": ["1"],
"requireVehicleRegistration": false,
"users": ["1"]
}
型
itemToInsert
{
'0': '{',
'1': '\r',
'2': '\n',
'3': ' ',
'4': ' ',
'5': ' ',
'6': ' ',
'7': '"',
'8': 'b',
'9': 'u',
'10': 's',
'11': 'i',
'12': 'n',
'13': 'e',
'14': 's',
'15': 's',
'16': 'N',
'17': 'a',
'18': 'm',
'19': 'e',
'20': '"',
'21': ':',
'22': ' ',
'23': '"',
'24': 'T',
'25': 'e',
'26': 's',
'27': 't',
'28': ' ',
'29': 'C',
'30': 'o',
'31': 'm',
'32': 'p',
'33': 'a',
'34': 'n',
'35': 'y',
'36': '"',
'37': ',',
'38': '\r',
'39': '\n',
'40': ' ',
'41': ' ',
'42': ' ',
'43': ' ',
'44': '"',
'45': 'b',
'46': 'u',
'47': 's',
'48': 'i',
'49': 'n',
'50': 'e',
'51': 's',
'52': 's',
'53': 'A',
'54': 'd',
'55': 'd',
'56': 'r',
'57': 'e',
'58': 's',
'59': 's',
'60': '"',
'61': ':',
'62': ' ',
'63': '"',
'64': '1',
'65': '2',
'66': '3',
'67': ' ',
'68': 'F',
'69': 'a',
'70': 'k',
'71': 'e',
'72': ' ',
'73': 'S',
'74': 't',
'75': 'r',
'76': 'e',
'77': 'e',
'78': 't',
'79': ',',
'80': ' ',
'81': 'C',
'82': 'a',
'83': 'n',
'84': 'b',
'85': 'e',
'86': 'r',
'87': 'r',
'88': 'a',
'89': ',',
'90': ' ',
'91': 'A',
'92': 'u',
'93': 's',
'94': 't',
'95': 'r',
'96': 'a',
'97': 'l',
'98': 'i',
'99': 'a',
'100': ',',
'101': ' ',
'102': '2',
'103': '9',
'104': '0',
'105': '3',
'106': '"',
'107': ',',
'108': '\r',
'109': '\n',
'110': ' ',
'111': ' ',
'112': ' ',
'113': ' ',
'114': '"',
'115': 'a',
'116': 'b',
'117': 'n',
'118': '"',
'119': ':',
'120': ' ',
'121': '"',
'122': '1',
'123': '2',
'124': '3',
'125': '4',
'126': '5',
'127': '6',
'128': '"',
'129': ',',
'130': '\r',
'131': '\n',
'132': ' ',
'133': ' ',
'134': ' ',
'135': ' ',
'136': '"',
'137': 'p',
'138': 'r',
'139': 'i',
'140': 'm',
'141': 'a',
'142': 'r',
'143': 'y',
'144': 'C',
'145': 'o',
'146': 'n',
'147': 't',
'148': 'a',
'149': 'c',
'150': 't',
'151': 'I',
'152': 'd',
'153': '"',
'154': ':',
'155': ' ',
'156': '"',
'157': 'F',
'158': 'U',
'159': 'I',
'160': '1',
'161': '2',
'162': '3',
'163': '4',
'164': '"',
'165': ',',
'166': '\r',
'167': '\n',
'168': ' ',
'169': ' ',
'170': ' ',
'171': ' ',
'172': '"',
'173': 'i',
'174': 'n',
'175': 'v',
'176': 'o',
'177': 'i',
'178': 'c',
'179': 'e',
'180': 'I',
'181': 'd',
'182': 's',
'183': '"',
'184': ':',
'185': ' ',
'186': '[',
'187': '"',
'188': '1',
'189': '"',
'190': ']',
'191': ',',
'192': '\r',
'193': '\n',
'194': ' ',
'195': ' ',
'196': ' ',
'197': ' ',
'198': '"',
'199': 'a',
'200': 'v',
'201': 'a',
'202': 'i',
'203': 'l',
'204': 'a',
'205': 'b',
'206': 'l',
'207': 'e',
'208': 'M',
'209': 'e',
'210': 'r',
'211': 'c',
'212': 'h',
'213': 'a',
'214': 'n',
'215': 't',
'216': 's',
'217': '"',
'218': ':',
'219': ' ',
'220': '[',
'221': '"',
'222': '1',
'223': '"',
'224': ']',
'225': ',',
'226': '\r',
'227': '\n',
'228': ' ',
'229': ' ',
'230': ' ',
'231': ' ',
'232': '"',
'233': 'r',
'234': 'e',
'235': 'q',
'236': 'u',
'237': 'i',
'238': 'r',
'239': 'e',
'240': 'V',
'241': 'e',
'242': 'h',
'243': 'i',
'244': 'c',
'245': 'l',
'246': 'e',
'247': 'R',
'248': 'e',
'249': 'g',
'250': 'i',
'251': 's',
'252': 't',
'253': 'r',
'254': 'a',
'255': 't',
'256': 'i',
'257': 'o',
'258': 'n',
'259': '"',
'260': ':',
'261': ' ',
'262': 'f',
'263': 'a',
'264': 'l',
'265': 's',
'266': 'e',
'267': ',',
'268': '\r',
'269': '\n',
'270': ' ',
'271': ' ',
'272': ' ',
'273': ' ',
'274': '"',
'275': 'u',
'276': 's',
'277': 'e',
'278': 'r',
'279': 's',
'280': '"',
'281': ':',
'282': ' ',
'283': '[',
'284': '"',
'285': '1',
'286': '"',
'287': ']',
'288': '\r',
'289': '\n',
'290': '}',
id: 'ACCBPNEJB84SMJJHFA',
createdAt: '2023-11-18T14:24:38.256Z',
updatedAt: '2023-11-18T14:24:38.256Z'
}
型
有没有其他方法可以将这些字段添加到这个对象中,以使JS更清楚地知道这不是一个字符串?我已经尝试了Object.assign()
,结果相同。
2条答案
按热度按时间v09wglhw1#
如果你展开一根绳子。
例如,以这段代码为例,
字符串
输出是
型
您能否验证FleetAccount类型的变量项中的值实际上是FleetAccount而不是String?
你可以做一些类似的事情,看看它是否打印字符串。
型
这里的变量项
型
可以在Typescript中保存一个字符串值,即使你显式地声明它是FleetAccount类型,因为Typescript只是JavaScript的编译时检查器,没有类型的概念,即,类型在运行时不强制执行。
7vhp5slm2#
看起来像为我工作链接检查操场
字符串