【问题标题】:Node.js + Mongoose set FieldsNode.js + Mongoose 设置字段
【发布时间】:2014-11-11 13:34:08
【问题描述】:

我正在尝试更新架构中除了 _id 和 __v 之外的几乎所有字段,这是目前的代码:

for (var field in SchemaTarget.schema.paths) {
       if ((field !== '_id') && (field !== '__v')) {
            //all fields except _id and __v
       }
    }

现在,我该如何设置例如:doc.field = something;?我也看过这个:doc[field] = something,有什么区别?

【问题讨论】:

    标签: javascript node.js mongodb mongoose


    【解决方案1】:
    doc.field=something
    

    访问对象的属性是点表示法。'field'必须是有效的JavaScript标识符,即字母数字字符序列,还包括下划线(“_”)和美元符号(“$”),不能以数字开头。例如,object.$1 有效,而 object.1 无效。

    doc[field] = something
    

    它是访问对象属性的括号表示法。'field'是一个字符串。字符串不必是有效标识符;它可以有任何价值,例如“1foo”、“!bar!”,甚至是“”(空格)。

    要详细了解这些,请查看MDN

    【讨论】:

    • 感谢您的解释。实际上,我还有一个问题,在我的代码中,我打印了doc.field.field2doc['field.field2'],它们的值不同,这正常吗?两者不应该具有相同的价值吗?
    • 在括号中你必须使用doc['field']['field2']
    【解决方案2】:

    在 javascript 或 Mongoose 中使用属性或哈希访问器没有区别。

    Mongoose 使用较新的“get”魔法属性,详细描述如下: https://stackoverflow.com/a/7891968/68567

    看代码就知道了: https://github.com/LearnBoost/mongoose/blob/master/bin/mongoose.js#L1549

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-14
      • 2016-12-15
      • 1970-01-01
      • 1970-01-01
      • 2012-05-08
      • 1970-01-01
      • 1970-01-01
      • 2023-02-11
      相关资源
      最近更新 更多