node.js - TypeORM: IN-operatøren fungerer ikke med MongoDB


Jeg prøver å få en liste over elementer ved å bruke en liste med ID-er som følger:

import { In } from 'typeorm';
...findBy({ _id: In(ids) })

ID-er settes ved opprettelse:

@Entity()
export class Foo {
  @ObjectIdColumn({ generated: false, unique: true })
  _id: string;
  ...
}

Men det fortsetter å returnere en tom liste.

Å skrive ut operatøren viser følgende:

FindOperator {
  '@instanceof': Symbol(FindOperator),
  _type: 'in',
  _value: [ '1', '2', '3' ],
  _useParameter: true,
  _multipleParameters: true,
  _getSql: undefined,
  _objectLiteralParameters: undefined
}

Svar #1

Bruk $in-operatoren nevnt i typeorm mongodb.

Eksempel :

I din entity:

import { Entity, ObjectID, ObjectIdColumn, Column } from "typeorm";

@Entity()
class User {
  @ObjectIdColumn()
  id: ObjectID;

  @Column()
  firstName: string;

  @Column()
  lastName: string;
}

export default User;

i programmet ditt:

import { createConnection } from "typeorm";
import User from "./entity/User";

createConnection()
  .then(async (connection) => {
    const repo = connection.getMongoRepository(User);

    const foo1 = new User();
    foo1.firstName = `John`;
    foo1.lastName = `Doe`;

    await repo.save(foo1);

    const users = await repo.find({
      where: {
        _id: {
          $in: [foo1.id],
        },
      },
    });

    console.log(users);
  })
  .catch((e) => {
    console.error(e);
  });