我正在尝试使用以下代码创建person
记录:
import Surreal from 'surrealdb.js';
...
const peopleFromSomewhere = await someProvider.getAllPeople();
// [{ email: 'some@email.com', fullName: 'Some Name' }, ... ]
for (const person of peopleFromSomewhere) {
const created = await db.create('person', {
email: person.email,
fullName: person.fullName
});
})
这将创建一个带有随机生成的唯一标识符的记录,例如:
{
email: 'some@email.com',
fullName: 'Some Name',
id: 'person:b5pfovinz7zkxlz3s8er'
}
但是如果我再次运行相同的代码,将插入相同的数据,只是使用不同的UID。
我想使用email
作为一个'主键'(使用关系数据库术语)-以避免插入相同的person
两次,具有完全相同的细节(电子邮件地址和全名)。
const created = await db.create(`person:${person.email}`, {
email: person.email,
fullName: person.fullName
});
只给我:
{
email: 'some@email.com',
fullName: 'Some Name',
id: '⟨`person:some@email.com`⟩:w9m4l31bwti4472tdoax'
}
在我看来不太对劲。
我期望:
{
email: 'some@email.com',
fullName: 'Some Name',
id: 'person:'some@email.com''
}
如何使用电子邮件地址的唯一ID创建person
记录,以便不会两次插入相同的数据?
1条答案
按热度按时间z9zf31ra1#
要创建具有复杂字符(如
@
符号)的记录ID,必须用```或⟨
和⟩
字符将ID括起来。使用这样的ID创建记录的查询如下所示:
这将转换为使用node.js驱动程序的以下查询:
数据库返回的记录始终包含
⟨
和⟩
,即使您用```字符将ID括起来。