【问题标题】:How can I access an object from a Mongoose Schema through the form?如何通过表单从 Mongoose Schema 访问对象?
【发布时间】:2019-05-04 02:23:31
【问题描述】:

我有这个猫鼬模式:

var mongoose = require("mongoose"), 
    passportLocalMongoose = require("passport-local-mongoose");

let userSchema = new mongoose.Schema({
    username:
    {type: String,
    unique: true
    },
    password: String,
    privileges:
    {
        region: [Number],
        read: [Boolean],
        write: [Boolean],
        edit: [Boolean],
        delete: [Boolean]
    }
});

userSchema.plugin(passportLocalMongoose);

module.exports = mongoose.model("User", userSchema);

我正在使用以下表格:

<form action="/register" method="POST">
    <input type="text" name="username"><br/>
    <input type="password" name="password"><br/>
    <input type="text" name="privileges.region"><br/>
    <input type="text" name="privileges.read"><br/>
    <input type="text" name="privileges.write"><br/>
    <input type="text" name="privileges.edit"><br/>
    <input type="text" name="privileges.delete"><br/>
    <button>Submit</button>
</form>

我想这个名字是可以的,因为权限是一个对象,所以每个属性都应该用点符号来访问。如果不是,请告诉我。

req.body 看起来像这样:

当我尝试 console.log(req.body.privileges.region) 或任何其他属性时,我得到未定义。我应该如何访问权限对象属性之一?谢谢。

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    请求返回的字典的键实际上是字符串:'privileges.region'、'privileges.delete'等。所以你必须访问它们

    req.body['privileges.region']
    

    人们通常会编写一个辅助函数来处理这种符号,以将其映射回他们的原始模型。或者他们可能会在浏览器中提交表单时进行映射,以便获得您真正想要的形状的数据:

    {username
    permissions:{region, ...}
    ...
    }
    

    【讨论】:

    猜你喜欢
    • 2012-04-03
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 2017-11-11
    • 2011-01-19
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多