Target an array in a mongo/mongoose schema using a handlebars form

夙愿已清 提交于 2019-12-13 04:50:05

问题


.I know I am not targeting correctly my schema because I get an empty array. I want to push my input values in the staff array. It seems like there's limited handlebars documentation on input fields templating. Thanks!

My Schema:

var docketSchema = new Schema({
  companyName: string,
  address: string,
  staff: [{ manager: String, 
            receptionist: String 
        }]
});

My handlebars template:

<div class="form-group">
    <input type="text" id="address" name="address" required value="{{input.address}}">
</div>
<div class="form-group">
    <input type="text" id="companyName" name="companyName" required value="{{input.companyName}}">
</div>
<div class="form-group">
    <input type="text" id="manager" name="manager" required value="{{input.staff.manager}}">
</div>
<div class="form-group">
    <input type="text" id="receptionist" name="receptionist" required value="{{input.staff.receptionist}}">
</div>

My route:

router.post('/create', function(req, res, next) {
  userService.addDocket(req.body, function(err) {
      var vm = {
        input: req.body
      };
      res.redirect('/dockets');
  });
});

My console:

[ { companyName: 'Acme',
    address: 'New York',
    staff: [] } ]

My addDocket method:

exports.addDocket = function(docket, next) {
    var newDocket = new Docket({
      companyName: docket.companyName,
      address: docket.address,
      staff: docket.staff
    });

    newDocket.save(function(err) {
      next(null);
    });
};

回答1:


In your handlebars template, try creating the form elements with arrays as follows:

<div class="form-group">
    <input type="text" id="address" name="address" required value="{{input.address}}">
</div>
<div class="form-group">
    <input type="text" id="companyName" name="companyName" required value="{{input.companyName}}">
</div>
<div class="form-group">
    <input type="text" id="manager" name="staff[manager]" required value="{{input.staff.manager}}">
</div>
<div class="form-group">
    <input type="text" id="receptionist" name="staff[receptionist]" required value="{{input.staff.receptionist}}">
</div>


来源:https://stackoverflow.com/questions/33907290/target-an-array-in-a-mongo-mongoose-schema-using-a-handlebars-form

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!