Я начинаю изучать Ionic / Angular, создавая приложение todo, которое использует couchdb / pouchdb для хранения своих данных. Я создал модель Todo, которая определяется следующим образом:
export class TodoModel {
_id : string;
title : string;
description: string;
constructor(_id : string, title: string, description: string){
this._id=_id;
this.title=title;
this.description=description;
}
}
Я понимаю, что мне нужно преобразовать свой объект todo в объект JSON, поэтому я пытаюсь сделать следующее:
todoToJson(todo : TodoModel): string{
let todoJson =JSON.stringify(todo);
console.info(typeof(todoJson));
console.info(todoJson);
return todoJson;
}
createTodo(todo : TodoModel) {
this.db.put(this.todoToJson(todo));
}
Но когда я на самом деле пытаюсь использовать эти функции, я получаю в консоли следующее:

Вот где я запутался, мой первый console.info сообщает мне, что мой объект является строкой (а Json - это строки, верно?), А результатом второго (для меня) является Json, который является правильно интерпретируется редактором json, так что я Я делаю не так?
Я пишу быстро перед тем, как пойти на работу, я могу забыть некоторые детали, поэтому дайте мне знать, если вам понадобится дополнительная информация.
О, понятно, я изменил return в todoToJson на «return todoJson;», но все равно получаю ту же ошибку: /
Если это не решит проблему, отредактируйте это в своем вопросе.
Если я правильно понимаю, put () хочет объект, а не строку. Пытаться не преобразовывать, а просто дать ему объект, который вы хотите сохранить?
@SamiKuhmonen Это работает! Большое спасибо, но теперь я не понимаю, в чем разница между объектом Json и строкой? был ли я неправ, когда сказал: «(а Json - это строки правильно?)»?
Вы совершенно правы - JSON - это особый способ форматирования строки для представления объекта Javascript. Что-то, что является JSON, является строкой. То, что является объектом, не является JSON. Это распространенное заблуждение - вот почему я сказал выше Huh, looks like they don't get it either



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Почему бы просто не передать объект в функцию put?
createTodo(todo : TodoModel) {
this.db.put(todo);
}
Поскольку я думал, что объект Json был строкой, он работает так же, как и предложил @SamiKuhmomen, я принимаю ваш как ответ, поскольку это комментарий;)
Классы в машинописном тексте всегда ведут себя как объекты JSON в машинописном тексте. Их нужно преобразовать в строку только тогда, когда вам нужна операция строкового типа. Спасибо, кстати :)
JSON objectАга, похоже, они тоже не понимают. Но вы пытаетесьstringifyобъект дважды вtodoToJson(объект => строка => строка ??) - попробуйте преобразовать его только один раз?