【问题标题】:KeystoneJS: Can't save NumberArrayKeystoneJS:无法保存 NumberArray
【发布时间】:2018-05-10 11:28:47
【问题描述】:

我正在使用 KeystonJS,我正在尝试按索引更新 NumberArray,但是当我保存更改时,它不会将其保存在管理 UI 中。

这是我的代码:

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' }

但是当我进入管理 UI 时,我的数组仍然显示 [0,0,0]。 此外,当我更新 project.progressionPerc 时它也有效。

有谁知道我做错了什么? 谢谢大家!

【问题讨论】:

    标签: node.js mongodb keystonejs


    【解决方案1】:

    我试图重现该问题,发现更新 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;
            ...
    

    主要的一点是我们必须用 null 来重置它以使更新发生。在重置之前,我使用项目来捕获原始值并在计算后重新分配回该字段。

    【讨论】:

      猜你喜欢
      • 2018-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-26
      • 1970-01-01
      • 2018-06-12
      相关资源
      最近更新 更多