Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to store hasAndBelongsToMany with already created documents ? #615

Open
smolleyes opened this issue Apr 22, 2017 · 1 comment
Open

Comments

@smolleyes
Copy link

smolleyes commented Apr 22, 2017

hi

i have this models:

affaires:

const Affaires = thinky.createModel('affaires', {
      id: type.string(),
      name: type.string().required(),
      conformiteId: type.string(),
      affaireTypeId: type.string().required(),
      batId: type.string().required(),
      refAffaireClient: type.string(),
      plans: type.object(),
      createdAt: type.date().default(r.now()),
      modifiedAt: type.date().default(r.now())
});

feuillesDeRoute:

const FeuillesDeRoute = thinky.createModel('feuillesDeRoute', {
      id: type.string(),
      fdrTypeId: type.string().allowNull(false),
      teamId: type.string().allowNull(false),
      date: type.string().allowNull(false),
      createdAt: type.date().default(r.now()),
      modifiedAt: type.date().default(r.now())
});

and chargesAffaires:

const ChargesAffaires = thinky.createModel('chargesAffaires', {
      id: type.string(),
      clientId: type.string().allowNull(false),
      title: type.string(),
      firstname: type.string(),
      lastname: type.string(),
      email: type.string().email(),
      phone: type.string().min(10),
      mobile: type.string().min(10),
      createdAt: type.date().default(r.now()),
      modifiedAt: type.date().default(r.now())
});

and this relations

FeuillesDeRoute.hasAndBelongsToMany(Affaires, 'affaires', 'id', 'id', { type: 'affaire' });
Affaires.hasAndBelongsToMany(FeuillesDeRoute, 'fdr', 'id', 'id', { type: 'affaire' });

Affaires.hasAndBelongsToMany(ChargesAffaires, 'chargesAffaires', 'id', 'id', { type: 'chargeAffaire' });
ChargesAffaires.hasAndBelongsToMany(Affaires, 'affaires', 'id', 'id', { type: 'chargeAffaire' });

now i use graphql on top of on thinky / rethink

when i put this in graphiql (with chargesAffaires already created... so i just pass the id list)

mutation {
  FeuilleDeRoute {
    add(input: {date: "170224", 
      team: "da710b2a-b9be-485f-a426-348e2532207c", 
      type: "68e36d8d-b2df-419d-8559-a568799b15e8",
      affaires: [
        {affaireTypeId: "5ffd0960-9a6b-4e7c-928d-9033235cba53", 
          batId: "17CA0254", 
          name: "olaaaaaa", 
          refAffaireClient: "DB21-45122",
          chargesAffaires: [{id:"4963af5d-4c96-4b09-8ae9-e93775966935"},{id:"591da9cd-c00a-4ffc-8a6b-b679aab1f4f7"}],
        }
      ]}) {
      id
      affaires {
        name
        chargesAffaires {
          lastname
        }
      }
    }
  }
}

after many tests my current code in the corresponding resolve function is (bad i think...)


resolve: (root, { input }) => {
          try {
            const fdr = new models.feuillesDeRoute({
              date: input.date,
              fdrTypeId: input.type,
              teamId: input.team,
            });
            fdr.affaires = [];
            _.each(input.affaires, async (affaire) => {
                const newAffaire = affaire;
                console.log('AFFAIRE = ', affaire);
                const chargesAffaires = await models.chargesAffaires.filter(affaire.chargesAffaires).getJoin();
                console.log(chargesAffaires);
                newAffaire.chargesAffaires = chargesAffaires;
                fdr.affaires.push(new models.affaires(Object.assign({}, newAffaire)));
              });
            return fdr.saveAll({ affaire: true });
          } catch (err) {
            console.log(err);
          }
        }
      }

it return :

{
  "data": {
    "FeuilleDeRoute": {
      "add": {
        "id": "07c97291-2674-4f21-8c91-aed9d7a411b4",
        "affaires": [
          {
            "name": "olaaaaaa",
            "chargesAffaires": [
              {
                "lastname": "Furlin"
              }
            ]
          }
        ]
      }
    }
  }
}

so it SEEMS working but no, i don t have any "affaire" saved in my database and all tables for hasAndBelongsToMany are empty

how can i do to save nested object like this ? where am i wrong ?

i spend 4 days on it and i need it work my work so i m a bit annoyed :(, really appreciate if someone can put me on the good way!

thanks !

@smolleyes
Copy link
Author

hummm, seems working if i just call fdr.saveAll() Oo confused with this...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant