Nodejs - mongodb не может получить разреженный индекс - PullRequest
1 голос
/ 24 марта 2019

Я использую node-mongodb-native в качестве драйвера MongoDb для моего приложения Node.js.Вот моя функция вставки:

async create(data) {
        return new Promise((resolve, reject) => {
            const datetime = Date.parse(new Date());
            data._id = new ObjectID().toString();
            data.createdAt = datetime;
            data.updatedAt = datetime;
            data.deleted = false;
            this._db.collection(this._table).ensureIndex({ 'body.flowid': 1 },
                { unique: true, dropDups: true, sparse: true },
                async (err) => {
                    if (err) { return reject('Duplicate phone number'); }
                    try {
                        await this._db.collection(this._table).insertOne(data);
                        return resolve(data);
                    } catch (error) {
                        return reject(error.message);
                    }
                });
        });
    }

При разреженном индексе для поля 'body.flowid я должен индексировать это поле только в том случае, если оно существует в документе.Затем я попытался вставить в коллекцию два документа с одинаковым body.flowid.Ни одна из двух вставок не удалась.Выкидывает ошибку вот так:

Here it threw the error of duplicate index value

Но после этого, когда я попытался получить индексы этой коллекции.Я не мог найти это!

image_id index exists">

Я не понимаю, что здесь произошло.Как это исправить?

...