【问题标题】:Mongoose validation access siblingsMongoose 验证访问同级
【发布时间】:2013-02-07 22:00:00
【问题描述】:

考虑案例:

validatedSchema = new schema({
  id : "1454216545154",
  name: { type: Number, validate: [
    function(v){
      return (this.id !== Server.LoggedIn.ID);
    }, 'Don't try to change the name of another user!!!!'
  ]}
})

我还没有设置完整的服务器进行测试,但正处于计划阶段。

我们能否从验证函数中访问兄弟元素,在本例中是“id”和“外部”变量?如果是,怎么做?

谢谢

【问题讨论】:

    标签: javascript json node.js mongodb mongoose


    【解决方案1】:

    不,你不能。但是您在这里要做的是真正的访问控制,它无论如何都不属于您的 ORM 层。

    但如果你真的想这样做,你可以添加 pre-save middleware 来检查当前用户是否只能将更改保存到自己的记录中:

    validatedSchema.pre('save', function (next) {
        if (this.id !== Server.LoggedIn.ID) {
            next(new Error("Can't change another user's data!"));
        } else {
            next();
        }
    });
    

    【讨论】:

    • 在你看来,这种限制应该属于哪里。
    • @bluejamesbond 在不了解您的系统的情况下很难具体说明,但代码甚至不应该达到这一点。因此,在您第一次知道这是针对用户的更新操作时。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    • 2018-05-23
    • 1970-01-01
    • 2017-05-19
    相关资源
    最近更新 更多