代码之家  ›  专栏  ›  技术社区  ›  Nils Truchaud

Keystone JS检索HTML表中的行ID

  •  1
  • Nils Truchaud  · 技术社区  · 10 年前

    我很难更新一些信息:

    我有一个数组,其中每一行都是一种形式。下面是它在翡翠中的样子:

    each info in infos
        form(method="post")
            input(type='hidden', name='action', value='save')
            td
                input(value='#{info.name.full}' disabled).form-control
            td
                input(value='#{info.field}' disabled).form-control
            td
                input(value='#{info.field1}' disabled).form-control
            td
                input(value='#{info.field2}' disabled).form-control
            td
                input(value='#{info.field3}' disabled).form-control
            td
                input(value='#{info.field4}' disabled).form-control     
            td
                input(value='#{info.field5}' disabled).form-control
            td
                input(value='#{info.field6}' disabled).form-control
            td
                input(value='#{info.field7}' disabled).form-control
            td
                select(name='status').form-control
                    option(value="")=(require)
                    option(value="bla")="Bla"
                    option(value="blabla")="Bla bla"
                    option(value="blablabla")="Bla bla bla"
                    option(value="blablablabla")="Bla bla bla bla"
            td
                    button(type='submit').btn.btn-primary Save
    

    我希望能够保存每一行,但单击“保存”时无法检索ID。

    我的JavaScript如下所示:

    view.on('post', { action: 'save' }, function (next) {
    
        var application = new Info.model();
        var updater = application.getUpdateHandler(req);
    
        updater.process(req.body, {
            flashErrors: true
        }, function (err) {
            if (err) {
                locals.validationErrors = err.errors;
            } else {
                locals.updateSubmitted = true;
            }
            next();
        });
    
    });
    

    但我想我不明白updateHandler是如何工作的。

    有人知道如何通过检索ID来保存行吗?

    1 回复  |  直到 10 年前
        1
  •  0
  •   Nils Truchaud    10 年前

    为了解决这个问题,我补充道

    input(type='hidden', name='id', value='#{info.id}')
    

    就在之后

    input(type='hidden', name='action', value='save')
    

    然后,我可以通过以下方式访问数据:

    console.log(req.body.id);
    console.log(req.body.item1);
    

    我更新了我的表格:

        Info.model.findByIdAndUpdate(req.body.id, { $set: {field1: req.body.item1, field2: item2}}, 
                function(err, info) {
                if (err) {
                    next(err);
                }
        });
    

    希望这能对你们中的一些人有所帮助。

    推荐文章