передача вложенных данных JSON из модели мангуста не работает

1

Я толкаю вложенные данные JSON в базу данных. Так выглядит моя схема,

const mongoose = require('mongoose');
// original Schema

const dataSourceSchema = mongoose.Schema({

    _id: mongoose.Schema.Types.ObjectId,
    name: { type: String, required: true, unique: true },
    type: { type: String, required: true },
    projectId: { type: mongoose.Schema.Types.ObjectId, ref: 'Project', required: true },
    config:{type: String, required: true}

});

module.exports = mongoose.model('DataSource', dataSourceSchema);

Я хотел бы передать следующие данные json в dataSourceSchema,

{
"name":"JdbcSourceConnector",
"type" :"string",
"config": {
"connector.class":" io.confluent.connect.jdbc.JdbcSourceConnector",
"tasks.max":1,
"connection.url":"<connection to connect to database along with username and password>",
"mode":"incrementing",
"incrementing.column.name":"<incrementing column name in table>",
"topic.prefix":"test-mysql-jdbc-"
}
}

Но его не брать, дает ошибку кастинга или "," ожидается.

Поэтому я попробовал это,

const dataSourceSchema = mongoose.Schema({

    _id: mongoose.Schema.Types.ObjectId,
    name: { type: String, required: true, unique: true },
    type: { type: String, required: true },
    projectId: { type: mongoose.Schema.Types.ObjectId, ref: 'Project', required: true },
    config:{ 
    connector.class:{ type: String, required: true },
tasks.max:{ type: String, required: true },
connection.url:{ type: String, required: true },
mode:{ type: String, required: true },
incrementing.column.name:{ type: String, required: true },
topic.prefix:{ type: String, required: true }
}

});

эта схема также дает мне ошибки, ожидаемые.

Если я передаю только строку, как я упомянул в моей исходной схеме, данные хранятся в db. но я хочу передать вложенные данные json, пожалуйста, направляйте меня в правильном направлении. Я также попытался stringify данные, но не работал.

  • 1
    Вы используете который является специальным символом, используйте "
  • 1
    Чтобы избежать ошибки приведения, используйте Schema.Types.Mixed вместо String для конфигурации, например config:{type: Schema.Types.Mixed, required: true}
Показать ещё 1 комментарий
Теги:
mongoose
mongoose-schema

1 ответ

1

Как я вижу, ошибка заключается в определении вашей схемы с вашей второй схемой, когда вы приблизились к ответу. Измените схему следующим образом:

const dataSourceSchema = mongoose.Schema({
      _id: mongoose.Schema.Types.ObjectId,
      name: { type: String, required: true, unique: true },
      type: { type: String, required: true },
      projectId: { type: mongoose.Schema.Types.ObjectId, ref: 'Project', required: true },
      config:{ 
            connectorClass:{ type: String, required: true },
            tasksMax:{ type: String, required: true },
            connectionUrl:{ type: String, required: true },
            mode:{ type: String, required: true },
            incrementingColumnName:{ type: String, required: true },
            topicPrefix:{ type: String, required: true }
      }
});

Я предложил изменение, поскольку мангуста не понимает точечную нотацию в ключевом столбце этой схемы, поэтому вы получили упомянутую вами ошибку.

Если вы хотите использовать точечную нотацию по какой-либо причине, инкапсулируйте ключ в ", а не в специальный символ, как показано в фрагменте кода.

Ps - Не забудьте изменить имена клавиш в json

  • 0
    Спасибо aashisAilawadi, я хочу передать с точкой (.) В моих данных JSON. Не могли бы вы помочь мне разобрать данные с (.) в данных.
  • 1
    @ darshanan Как я вижу, вы используете символ «вместо обычного». Я бы посоветовал вам снова ввести двойные кавычки в вашем редакторе и проверить, являются ли они стандартными двойными кавычками или нет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню