gpt4 book ai didi

rethinkdb - rethinkdb 中的链接查询

转载 作者:行者123 更新时间:2023-12-04 08:59:45 26 4
gpt4 key购买 nike

假设我有一个“类别”表,每个类别在“数据”表中都有关联数据,并且在其他“关联”表中都有关联数据,并且我想删除一个类别及其所有关联数据。我目前正在做的事情是这样的:

getAllDataIdsFromCategory()
.then(removeAllAssociated)
.then(handleChanges)
.then(removeDatas)
.then(handleChanges)
.then(removeCategory)
.then(handleChanges);

有没有办法在数据库端链接这些查询?我的功能目前如下所示:

var getAllDataIdsFromCategory = () => {
return r
.table('data')
.getAll(categoryId, { index: 'categoryId' })
.pluck('id').map(r.row('id')).run();
}

var removeAllAssociated = (_dataIds: string[]) => {
dataIds = _dataIds;
return r
.table('associated')
.getAll(dataIds, { index: 'dataId' })
.delete()
.run()
}

var removeDatas = () => {
return r
.table('data')
.getAll(dataIds)
.delete()
.run()
}

请注意,我无法使用 r.expr() 或 r.do(),因为我想根据上一个查询的结果进行查询。我的方法的问题在于,它不适用于大量“数据”,因为我必须将所有 id 带到客户端,并且在客户端循环中对其进行分页似乎是一种解决方法。

最佳答案

您可以使用 forEach 来实现:

r.table('data').getAll(categoryID, {index: 'categoryId'})('id').forEach(function(id) {
return r.table('associated').getAll(id, {index: 'dataId'}).delete().merge(
r.table('data').get(id).delete())
});

关于rethinkdb - rethinkdb 中的链接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31893789/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com