У меня есть метод Meteor, который выполняет вызов API, тогда ответ вызова сохраняется в коллекции пользователей. Я использую пакет Collection2 с моим проектом, и я немного потерял настройку для своего SimpleSchema.Сохранение результата API-вызова для коллекции, но получение ошибок при настройке SimpleSchema
Вот что ответ JSON выглядит с API вызова:
[{ "ключевое слово": "2i", "URL": "http://example.com", "название" : «Пример», «timestamp»: «2016-11-05 08:54:42», «ip»: «00.00.00.000», «clicks»: «2», «user»: «HweoSCY2ujscjJ9Zl»} {«keyword»: «2j», «url»: «http://example.com», «title»: «YouTube», «timestamp»: «2016-11-06 02:11:18», ф ":" 00.00.00.000" , "щелкает": "1", "пользователь": "HweoSCY2ujscjJ9Zl"}, { "ключевое слово": "2К", "URL": "http://example.com",» title ":" YouTube "," timestamp ":" 2016-11-08 03:35:12 "," ip ":" 00.00.00.000 "," clicks ":" 0 "," user ":" HweoSCY2ujscjJ9Zl " }]
Вот в настоящее время, как я был в состоянии сохранить эти данные в коллекцию пользователей:
Meteor.users.update(Meteor.userId(), {
$set: { 'shortURLs.URLS': result.data }
});
Это работает и выглядит в БД:
Мой вопрос что я хотел бы настроить SimpleSchema для этого, чтобы «timestamp» будет сохранена как Date вместо String, но каждый раз, когда я пытаюсь создать схему для нее, я просто получаю ошибки, такие как "After filtering out keys not in the schema, your modifier is now empty"
. Я пробовал много разных вариаций, чтобы попытаться заставить его работать, но ни один из них не был успешным, вот только в настоящее время, где он по адресу:
Schema.ShortURLs = new SimpleSchema({
shortURLs: {
type: Object
},
'shortURLs.$': {
type: Object
},
'shortURLs.$.keyword': {
type: String,
optional: true,
label: "Keyword"
},
'shortURLs.$.url': {
type: String,
optional: true,
label: "URL"
},
'shortURLs.$.title': {
type: String,
optional: true,
label: "Title"
},
'shortURLs.$.timestamp': {
type: Date,
optional: true,
label: "Timestamp"
},
'shortURLs.$.ip': {
type: String,
optional: true,
label: "IP"
},
'shortURLs.$.clicks': {
type: String,
optional: true,
label: "Clicks"
},
'shortURLs.$.user': {
type: String,
optional: true,
label: "User"
},
});
Это прикрепляют помимо простого пользователя схемы:
...
shortURLs: {
type: Schema.ShortURLs,
optional: true
},
...
и у меня есть, что прилагается к коллекции пользователей:
Meteor.users.attachSchema(Schema.User);
Я не думаю, что есть проблема с тем, как я это прилагается, как у меня есть другие настройки SimpleSchemas точно так же и й я отлично работаю, я считаю, что проблема в том, как я написал этот конкретный текст. Любая помощь здесь была бы чрезвычайно оценена.
Большое спасибо за ответ, мне удалось заставить его работать с этим. У меня только один вопрос, всякий раз, когда я вызываю этот метод, я вижу, что такое сообщение появляется в моей консоли для каждого массива: '' SimpleSchema.clean: autoconverted value 2016-11-11 23:44:28 from string to object для shortURLs . $. отметка времени "'. Вы знаете, как лучше это сделать? В некоторых случаях результат API возвращает 100+, так что, увидев, что это всплывающее окно, которое много раз заставляет меня думать, что я, вероятно, не делаю что-то правильно/наиболее эффективно, но, возможно, я ошибаюсь. Любой вход очень оценен, спасибо снова! :) – U54
Это нормально, так как необработанный тип значения даты, возвращаемого из api, является строкой. Вы можете остановить это, установив 'SimpleSchema.debug = false', но также можете пропустить другие предупреждения из пакета SimpleSchema. – JeremyK