【问题标题】:How do I query a particular field in loopback 4 through the repository?如何通过存储库查询环回 4 中的特定字段?
【发布时间】:2019-05-05 21:08:18
【问题描述】:

我想强制执行唯一性,因此我想看看是否有任何其他电子邮件和用户名与发布到此路线的电子邮件和用户名相似。我如何通过存储库做到这一点,它不断询问我看到但无法理解的过滤器。

@post('/users', {
    responses: {
      '200': {
        description: 'User model instance',
        content: {'application/json': {schema: {'x-ts-type': User}}},
      },
    },
  })
  async create(@requestBody() user: User): Promise<User> {
    //check : User= await this.userRepository.create(user);
    //@param.query.object('filter', getFilterSchemaFor(User)) filter?: Filter;
    // var check:any=await this.userRepository.find(filter);
    //filter: Filter;
    var check: User = await this.userRepository.find({email:user.email});
    var isNotPresent: boolean = true;
    // check.forEach(function(val){

    // });
    // if(isNotPresent)
    return await this.userRepository.create(user);
  }

【问题讨论】:

    标签: mongodb loopbackjs v4l2loopback


    【解决方案1】:

    Filter 对象具有以下可用于定义查询及其响应的属性:

    1. where:用于定义查询。在您的情况下,您希望找到与请求正文中提供的电子邮件和用户名相同的现有用户。
    2. fields:指定您希望在查询响应中包含或排除的字段。 find() 返回的数组中的每个对象都将只有那些在fields 对象中设置为true 的字段。
    3. offsetskiplimitorder:用于分页。

    因此,在您的情况下,假设“用户”具有“电子邮件”和“用户名”,过滤器对象将如下所示:

    const filter: Filter = {
        where: {
            'email': user.email,
            'username': user.username
        },
        fields: {
            email: true,
            username: true
        },
        offset: 0,
        limit: 10,
        skip: 0,
        order: [],
    };
    

    您对存储库方法的调用如下所示:

    var check: User = await this.userRepository.find(filter);
    

    我的第一个 SO 答案。希望这会有所帮助。

    【讨论】:

    • 相信我,当我说你救了我免于伤脑筋时。也恭喜你的第一个答案。
    • 你能不能也试试这个问题stackoverflow.com/questions/55993621/…我想出了一个技巧,但希望有更好的方法
    • 感谢您的支持!至于你的另一个问题,你是否试图确保每个“id”在整个集合中都是唯一的?另外,我不知道“express-schema”,但由于您已用“mongodb”标记问题,我假设您指的是“mongoose schema”。告诉我。
    • 我的意思是,当我们制作快速应用程序时,我们在模型文件中让它是唯一的,就像用户名应该是唯一的,电子邮件应该是唯一的。那种东西
    • 我已经对你的问题进行了抨击。希望对您有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2021-05-22
    • 2011-10-17
    • 2016-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多