KeystoneJS: не удается сохранить NumberArray - PullRequest
0 голосов
/ 25 апреля 2018

Я использую KeystonJS и пытаюсь обновить NumberArray по индексу, но когда я сохраняю изменения, они не сохраняются в пользовательском интерфейсе администратора.

Вот мой код:

Project.model.findOne({projectId: projectId}).exec(function(err, project){
    if (err) return res.apiResponse({statusCode: 500, message: err});
    if (!project) return res.apiResponse({ statusCode: 400, message: "Can't find this projects" });
    console.log("BEFORE : " + project.detailsPerc[index]);
    project.detailsPerc[index] += 40;
    // project.progressionPerc += 10;

    project.save(function(err, result) {
        if(err) {
            console.log(err);
            res.apiResponse({
                statusCode: 400,
                items: err
            });
        }
        else {
            console.log("RESULTAT :" + result);
            console.log("AFTER : " + project.detailsPerc[index]);
            res.apiResponse({
                statusCode: 200,
                items: project
            });
        }
    })
})

Результат хороший:

RESULTAT :{ _id: 5ab158fb87475e062c0122c9,
clientId: '1',
__v: 2,
client: 5ad5f4aaa42faf03b95cacf6,
detailsPerc: [ 40, 0, 0 ],
details: [ 'Masterisation', 'EMM', 'Developpement' ],
progressionPerc: 20,
projectId: '1',
name: 'jarviis' }

Но все же, когда я захожу в интерфейсе администратора, мой массив все еще показывает мне [0,0,0]. Кроме того, это работает, когда я обновляю project.progressionPerc.

Кто-нибудь знает, что я делаю не так? Спасибо, ребята!

1 Ответ

0 голосов
/ 10 мая 2018

Я попытался воспроизвести проблему и обнаружил, что есть некоторые проблемы с обновлением NumberArray.Следующий код может работать для меня:

Project.model.findOne().exec(function(err, project){
    if (err) return res.apiResponse({statusCode: 500, message: err});
    if (!project) return res.apiResponse({ statusCode: 400, message: "Can't find this projects" });
        console.log("BEFORE : " + project.detailsPerc[index]);
        var items = project.detailsPerc;
        project.detailsPerc = null;
        items[index] += 40;
        project.detailsPerc = items;
        project.progressionPerc += 10;
        ...

Суть в том, что мы должны сбросить это значение с нуля, чтобы обновление произошло.Перед сбросом я использовал элементы для захвата исходных значений и переназначил их обратно в поле после вычислений.

...