2015-10-15 39 views
0

雖然與的NodeJS工作Sequelize,我收到了來自Sequelize這個錯誤,看起來像這樣:給定JSON的第一行是什麼?

{ [SequelizeUniqueConstraintError: Validation error] 
  name: 'SequelizeUniqueConstraintError', 
  message: 'Validation error', 
  errors:  
   [ { message: 'unique_identifier_UNIQUE must be unique', 
       type: 'unique violation', 
       path: 'unique_identifier_UNIQUE', 
       value: 'authentication123456' } ], 
  fields: { unique_identifier_UNIQUE: 'authentication123456' } } 

錯誤本身是很清楚的。但是,我注意到這個JSON看起來很奇怪。 在這個JSON的第一線,你可以看到:

[SequelizeUniqueConstraintError: Validation error]

這是不是字符串,也不陣列,甚至後面沒有逗號將其從JSON下一行分開。

那是什麼?它看起來像是對我的評論或標題。但是,這是允許在JSON?我沒有找到任何解釋這一點的參考。

+4

這不是JSON。屬性名稱和字符串值必須用JSON中的雙引號引起來。 – Pointy

+0

即使您從文本中刪除此評論,它也不會是JSON anyaway。 – hindmost

+0

刪除第一行後,不會使它成爲json嗎? – Saro

回答

0

好吧,我明白這是從哪裏來的。

此錯誤是用console.log(err)命令打印的。它所做的是調用err對象的toString方法,它將結果按原樣進行格式化。 感謝@Pointy我注意到,這甚至不是JSON,這讓我明白了這個問題。因此,而不是執行console.log的(錯誤),JSON.stringify(ERR)被調用,現在我們有正確的JSON格式:

{ 
    "name": "SequelizeUniqueConstraintError", 
    "message": "Validation error", 
    "errors": [ 
     { 
      "message": "unique_identifier_UNIQUE must be unique", 
      "type": "unique violation", 
      "path": "unique_identifier_UNIQUE", 
      "value": "authentication123456" 
     } 
    ], 
    "fields": { 
     "unique_identifier_UNIQUE": "authentication123456" 
    } 
} 
+0

由於用console.log()打印,第一行可能是對象的名稱及其類型 – WirelessKiwi