5

Occurs when I run the sequelize-cli command sequelize db:seed:all

When I try and seed an object as JSON I get the following error:

ERROR: Invalid value { viewId: null,
  dateRanges: [ { startDate: null, endDate: null } ],
  samplingLevel: 'DEFAULT',
  dimensions: [ { name: 'ga:channelGrouping' } ],
  metrics: [ { expression: 'ga:users' } ] }

This is my model

module.exports = (Sequelize, DataTypes) => {
  const Report = Sequelize.define('Report', {
    name: {
      type: DataTypes.STRING,
      allowNull: false,
      unique: true,
      validate: {
        is: /^[a-z0-9\_\-]+$/i,
      },
    },
    platform: {
      type: DataTypes.STRING,
      allowNull: false,
      validate: {
        is: /^[a-z0-9\_\-]+$/i,
      },
    },
    query: {
      type: DataTypes.JSON,
    },
  });
  return Report;
};

This is my seed file

'use strict';

module.exports = {
  up: (queryInterface, Sequelize) => {
    return queryInterface.bulkInsert('Reports', [
      {
        name: 'users per channel',
        platform: 'google',
        query: {
          "viewId": null,
          "dateRanges": [
            {
              "startDate": null,
              "endDate": null,
            },
          ],
          "samplingLevel": "DEFAULT",
          "dimensions": [
            {
              "name": "ga:channelGrouping",
            },
          ],
          "metrics": [{ "expression": "ga:users" }],
        },
        createdAt: new Date(),
        updatedAt: new Date(),
      },
    ]);
  },

  down: (queryInterface, Sequelize) => {},
};

I was able to insert the same data directly with this query

INSERT INTO "Reports" (id, name, platform, query, "createdAt", "updatedAt") VALUES (1, 'users per channel', 'google', '{"viewId":null,"dateRanges":[{"startDate":null,"endDate":null}],"samplingLevel":"DEFAULT","dimensions":[{"name":"ga:channelGrouping"}],"metrics":[{"expression":"ga:users"}]}', '2018-04-15 08:55:12.449-05', '2018-04-15 08:55:12.449-05');

I wasn't able to find anyone having the same issue as me so I believe it is something simple but I cannot see it.

I'm able to run the seed with no problem if I wrap the object in JSON.stringify() but surely that isn't what is intended.

1

1 Answer 1

5

Encountered same problem Just stringify your query field like

'{
   "viewId": null,
   "dateRanges": [
      {
         "startDate": null,
         "endDate": null,
      },
   ],
   "samplingLevel": "DEFAULT",
   "dimensions": [
        {
           "name": "ga:channelGrouping",
        },
    ],
   "metrics": [{ "expression": "ga:users" }],
}'

@Jaygles take a look at your sql

INSERT INTO "Reports" (id, name, platform, query, "createdAt", "updatedAt") VALUES (1, 'users per channel', 'google', '{"viewId":null,"dateRanges":[{"startDate":null,"endDate":null}],"samplingLevel":"DEFAULT","dimensions":[{"name":"ga:channelGrouping"}],"metrics":[{"expression":"ga:users"}]}', '2018-04-15 08:55:12.449-05', '2018-04-15 08:55:12.449-05');

you are inserting stringified data. So you need also stringify it in seed

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.