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);
Другие вопросы по тегам