Nodejs Couchbase десериализует свойство date из документа

Я сохраняю в Couchbase документ, который имеет значения даты javascript, и хочу получить его точно так же, а не строку "2016-01-02T12:13:14Z".

Нашел способ добиться этого с помощью простого Javascript, используя второй параметр JSON.parse, но Couchbase выполняет внутреннюю десериализацию и не может использовать ее.

Есть ли способ отключить десериализацию Couchbase и избежать JSON.stringify + JSON.parse и ни глубоко идущий объект?

bucket.get(key, (err, result) => {
    if (err) {
        //deal with error here
    } else {
        //here "result.value" is already deserialized
        done(result.value);
    }
});

1 ответ

Как вы, наверное, знаете, обработка объектов JSON и Date может быть немного специфичной в зависимости от того, что вы пытаетесь сделать. Мы склонны придерживаться значений по умолчанию. То, что вы ищете, это довольно продвинутый вариант использования. На данный момент у нас нет прямой поддержки для изменения способа анализа.

Однако для этого есть интерфейс. Он называется "транскодером" и позволяет вам очень точно определить, как вы хотите преобразовать входящие данные в то, что хранится. У меня нет примера, который бы показал, что вы хотите делать, но хорошее место, чтобы начать искать это на более низком уровне, показано в тестах.

Однако может быть проще просто по-разному относиться к тому, что вы храните на уровне приложения. Из моего прочтения параметра revivier, на который вы указали, это будет только во время поиска. Я уверен, что ничто не мешает вам обернуть объект get(), а затем мутировать объект перед тем, как передать его следующему слою по очень низкой цене.

Другие вопросы по тегам