Search code examples
javascriptsequelize.jssequelize-clifaker.js

using faker seeds with sequelize.js: a column value based on the value of other column value


function deptTypes(items) { 
  return items[Math.floor(Math.random()*items.length)]; 
}
var items = ["a", "b","c","d","e","f"]; 
await queryInterface.bulkInsert('reviews', [...Array(50)].map((review) => (
  {
    user_id: users[Math.floor(Math.random()*users.length)].id, 
    title: faker.name.title(), 
    review: faker.lorem.sentences(6), 
    rating: Math.round(Math.random()*5),
    department_type: deptTypes(items), 
    department_uid: (deptTypes(items) == 'a' ) ? alist[Math.floor(Math.random()*alist.length)].id 
                      :(deptTypes(items) == 'b' ) ? blist[Math.floor(Math.random()*blist.length)].id
                        : (deptTypes(items)== 'c') ? clist[Math.floor(Math.random()*clist.length)].id 
                          : (deptTypes(items) == 'd') ? dlist[Math.floor(Math.random()*dlist.length)].id
                            : (deptTypes(items) == 'e') ? elist[Math.floor(Math.random()*elist.length)].id
                              : flist[Math.floor(Math.random()*flist.length)].id, 
    created_at: new Date(),
    updated_at: new Date()
  }
)), {});

what i'm trying is i need the same deptType item that is assigned to department_type and give department_uid a value based on department_type, but im not getting desired result ... please help


Solution

  • At the top of the map function, declare a variable which will be the dept for this iteration:

    await queryInterface.bulkInsert('reviews', [...Array(50)].map((review) => {
    
      const dept = deptTypes(items);
    
      return {
        user_id: users[Math.floor(Math.random()*users.length)].id, 
        title: faker.name.title(), 
        review: faker.lorem.sentences(6), 
        rating: Math.round(Math.random()*5),
        department_type: dept,
        department_uid: (dept == 'a' ) ? alist[Math.floor(Math.random()*alist.length)].id 
                          :(dept == 'b' ) ? blist[Math.floor(Math.random()*blist.length)].id
                            : (dept == 'c') ? clist[Math.floor(Math.random()*clist.length)].id 
                              : (dept == 'd') ? dlist[Math.floor(Math.random()*dlist.length)].id
                                : (dept == 'e') ? elist[Math.floor(Math.random()*elist.length)].id
                                  : flist[Math.floor(Math.random()*flist.length)].id, 
        created_at: new Date(),
        updated_at: new Date()
      };
    }), {});