lokijs - есть ли способ сделать составной уникальный индекс в loki?
Есть ли способ указать составной уникальный индекс в loki? Я попробовал что-то вроде:
db.addCollection('contents', {unique: ['id', 'wsID']});
но это, кажется, делает 2 разных уникальных индекса.. это комбинация двух, которые я хотел бы сделать уникальными.
Большое спасибо за любые предложения.
1 ответ
Я сделал что-то вроде этого, сделав суррогатный ключ:
db.addCollection('contents', {unique: 'mySurrogateKey'});
При добавлении записей в коллекцию вы можете создать собственное свойство и задать для него простую конкатенацию:
record.mySurrogateKey = `${record.id}${record.wsID}`
collection.insert(record)
Связанный: https://github.com/techfort/LokiJS/issues/450
Что я действительно использую
import SparkMD5 from "spark-md5";
import stringify from "fast-json-stable-stringify";
public getTemplateId(t: IDbTemplate) {
const {front, back, css, js} = t;
return SparkMD5.hash(stringify({front, back, css, js}));
}
const tHook = (t: IDbTemplate) => {
t.key = this.getTemplateId(t);
};
this.template.on("pre-insert", tHook);
this.template.on("pre-update", tHook);