У меня есть эта схема для авторов:
module.exports = {
"id": "Author",
"properties": {
"name": {
"type": "string",
"description": "The full name of the author"
},
"description": {
"type": "string",
"description": "A small bio of the author"
},
"books": {
"type": "array",
"description": "The list of books published on at least one of the stores by this author",
"items": {
"$ref": "Book"
}
},
"website": {
"type": "string",
"description": "The website url of the author"
},
"avatar": {
"type": "string",
"description": "The url of the avatar of this author"
}
}
}
Когда я отправляю сообщение на http://localhost:9000/authors/ для создания нового автора, я получаю эту ошибку :
ошибка: обнаружена ошибка типа InternalServerError: ValidationError: books: приведение к массиву не удалось для значения "['The Twits', 'BFG']" по пути "books"
Это JSON, который я публикую
{
"name": "Roald Dahl",
"description": "Writes childrens novels",
"books": [
"The Twits",
"The BFG"
],
"website": "www.roalddahl.com",
"avatar": "https://www.natgeokids.com/wp-content/uploads/2016/11/Roald-Dahl-1-1.jpg"
}
Насколько мне известно, этот JSON верен. Ошибка, кажется, предполагает наличие проблемы с массивом books
. Так ли это и если да, то как это исправить?
Добавление схемы книги:
module.exports = {
"id": "Book",
"properties": {
"title": {
"type": "string",
"descrtiption": "The title of the book"
},
"authors": {
"type": "array",
"description": "List of authors of the book",
"items": {
"$ref": "Author"
}
},
"isbn_code": {
"type": "string",
"description": "The stores where clients can buy this book"
},
"stores": {
"type": "array",
"description": "The stores where clients can buy this book",
"items": {
"type": "object",
"properties": {
"store": {
"$ref": "Store"
},
"copies": {
"type": "integer"
}
}
}
},
"genre": {
"type": "string",
"description": "Genre of the book",
},
"description": {
"type": "string",
"description": "Description of the book"
},
"reviews": {
"type": "array",
"items": {
"$ref": "ClientReview"
}
},
"price": {
"type": "number",
"minimum": 0,
"description": "The price of this book"
}
}
}
"items": { "$ref": "Book" }
? Я использую этот онлайн-инструмент для тестирования, и без него данные действительны! - person Saeed   schedule 19.08.2018$ref
отлично подходит для схемы JSON; предполагая, что существует схема для объектаBook
, тогда ссылка (используемая здесь OP) будет означать, что массив будет содержать объекты Book. Но в документе JSON OP использует строки, а не объекты книги. - person Ray Toal   schedule 19.08.2018Book
для видимости. Этот код взят из книги REST API Development With Node.js. Я изучаю это, поэтому есть несколько вещей, в которых я не уверен (например,$ref
). Имея это в виду, мой JSON, вероятно, неправильно использует строку для книг. Предполагая, что он должен использовать объект книги, как бы я изменил свой JSON, чтобы использовать это? Нужно ли сначала добавлять книги? - person runnerpaul   schedule 19.08.2018