【问题标题】:Create a Schema object in Mongoose/Handlebars with custom keys/values使用自定义键/值在 Mongoose/Handlebars 中创建 Schema 对象
【发布时间】:2016-02-26 18:22:31
【问题描述】:

我想创建一个表单来在 mongo/mongoose 模式中输入对象的自定义键和值,以便最终在车把视图中看到。请参阅示例以更好地解释。任何帮助都会很棒。 :)

Mongoose/Mongodb 架构:

var docketSchema = new Schema({
  staff: [{ String: String, String: String }]
});

车把输入视图:

<div class="form-group">
    <input value="{{input.staffkey1}}">
    <input value="{{input.staffvalue1}}">
</div>

<div class="form-group">
    <input value="{{input.staffkey2}}">
    <input value="{{input.staffvalue2}}">
</div>

【问题讨论】:

  • 架构应该看起来像 staff: [{ key: String, value: String }] 并且你会这样做 {{#each staff}} {{key}}:{{value}}{{/each}}
  • @Molda 谢谢。另一个问题。从表单输入中定位数组。是否如下:??
  • 这取决于您传递给视图的内容。如果你通过 {staff: [{key:'key1', val:'val1'}, {key:'key2', val:'val2'}]} 那么在视图中你会做类似 {{#each staff}} {{key}}: {{/each}}
  • @Molda,我正在使用人员:[{ key: string }],我对表单的看法是 {{#each staff}}{/each}} 并且不呈现我的表单。谢谢。
  • 如何通过员工查看?您是否使用 express,例如 res.render('myView', {staff:[{...}]});

标签: node.js mongodb mongoose handlebars.js


【解决方案1】:

使用 mongoose 的原因通常是为了确保您的文档具有一些已知的键并验证新对象以使其符合您的架构。

如果您明确不希望您的对象具有相同的键,请使用架构类型 Mixed - http://mongoosejs.com/docs/schematypes.html

var docketSchema = new Schema({
   staff: [{}]
});

【讨论】:

    【解决方案2】:

    您可以将strict: false 添加到您的架构中,以将未定义的字段添加到您的架构中。

    var docketSchema = new Schema({
        //
    }, {strict: false});
    

    尽管如此,定义字段总是更好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-09
      • 2017-10-31
      • 1970-01-01
      • 1970-01-01
      • 2021-03-22
      • 2019-12-27
      • 2021-05-21
      • 2016-12-15
      相关资源
      最近更新 更多