当前位置: 首页 > 知识库问答 >
问题:

获取用于Mongoose和MongoDB验证的父架构属性

潘衡
2023-03-14

假设我在另一个模式(项目)中有一个嵌套的模式(邀请),当试图保存邀请对象时,我想检查项目模式中的父属性“启用”是否设置为true或false,然后允许该人保存邀请对象到邀请数组。显然,this.enabled不起作用,因为它试图从邀请函模式中获得它,邀请函模式不存在。如何让父架构上的启用属性进行验证?

有什么想法吗?感谢任何帮助!

var validateType = function(v) {
    if (v === 'whateverCheck') {
       return this.enabled || false; <== this doesn't work
    } else {
        return true;
    }
};

var invitationSchema = new Schema({
    name: { type: String },
    type: {
        type: String,
        validate: [validateType, 'error message.']
    }
 });

var itemSchema = new Schema({
    title: { type: String },
    description: { type: String },
    enabled: {type: Boolean}, <== trying to access this here
    invitations: { type: [ invitationSchema ] },
});

var ItemModel = mongoose.model('Item', itemSchema, 'items');
var InvitationModel = mongoose.model('Invitation', invitationSchema);

共有1个答案

葛鸿熙
2023-03-14

通过调用实例,可以从嵌入式文档模型实例访问嵌入式文档的父级。父项() 。因此,您可以从任何Mongoose中间件(如验证器或钩子)执行此操作。

在您的情况下,您可以:

var validateType = function(v) {
    if (v === 'whateverCheck') {
       return this.parent().enabled || false; // <== this does work
    } else {
        return true;
    }
};

 类似资料:
  • 我需要验证xml内容并获取有效标签及其值。我知道我是否可以使用Schematron来验证标签及其内容。我可以使用Schematron本身来获取所有有效标签及其值并将它们放在另一个xml或html中吗? 如果不可能,请建议我其他方式。 谢谢你,巴拉。

  • 我有一个mongoose对象模式,看起来类似于以下内容: 我试图创建一个新的职位使用以下内容: 但是,一旦我保存了文章,它就会被创建为带有images属性的空数组。我做错了什么?

  • 我正在开发一个包含两种类型数据的应用程序: 1)用户配置文件-用户名、电子邮件、用户ID、访问令牌、SessionID、AvatarUrl等。对于每个用户,此数据约为20kB,对于活跃用户,数据将被读取100次/天并写入5次/天。我正在考虑使用ObjectRocket(MongoDB)或Cloudant(CouchDB with Clustering)——我喜欢Cloudant的极端容错性(主/主

  • 我询问了如何建立一个服务呼叫,并在HttpClient上获得了一个很好的信息。然而,虽然这个问题在技术上得到了回答,但我还是被卡住了。 在控制台中,我可以看到我的浏览器向服务发送了什么请求来获取授权令牌。然而,当我尝试在我的服务层中模拟构建请求的调用时,我得到以下错误消息。我在这里犯错的可能性很大。不知道该用谷歌搜索什么,真的。。。 "StatusCode: 500, ReasonPhrase:'

  • 我是新来的。当声明多个mongoose模式时,js和我在访问时遇到问题。 //模式。模型中的js //索引。控制器中的js 当我的模式中只有“用户模式”时。js,从索引中的方法“passwordVerification()”调用数据库。js将返回从数据库检索到的相关密码。但是,当我开始在模式中添加其他模式(如“问题模式”)时。方法“passwordVerification()”将始终返回null。

  • 问题内容: 我正在尝试使用Mongoose将AngularJS与MongoDB连接。我想传递控制器要使用的模型,所以我可以$ scope到数据。我不确定是否必须设置Angular Service,如果可以,您是否可以指出正确的方向。谢谢。 概述: 模型: 控制器: 问题答案: 您将需要一个临时步骤。直接从Angular转到Mongo是行不通的。如果您想要Mongo的通用REST接口,可以使用Ang