2015-02-10 5 views
4

В документации для Collection2 объясняется, как создать Schema, и как подключить Схему к коллекции, но я думаю, что полный рабочий пример с форматами вставки/обновления с обработкой ошибок и без автоматической формы отсутствует.Как реализовать Collection2 на рабочем проекте Meteor?

Как мне изменить существующий проект, чтобы использовать Collection2? В частности:

  • Нужно ли мне еще check(Meteor.userId(), String);?
  • Мне больше не нужно звонить check()?
  • Могу ли я удалить код подтверждения? Я просто звоню insert(), а Collection2 поймает все ошибки благодаря схеме?
  • Что-нибудь еще я должен изменить?

Здесь пример кода из DiscoverMeteor:

Meteor.methods({ 
    postInsert: function(postAttributes) { 
    check(Meteor.userId(), String); 
    check(postAttributes, { 
     title: String, 
     url: String 
    }); 

    var errors = validatePost(postAttributes); 
    if(errors.title || errors.url) { 
     throw new Meteor.Error('invalid-post', 'Set a title and valid URL for your post'); 
    } 

    var user = Meteor.user(); 
    var post = _.extend(postAttributes, { 
     userId: user._id, 
     author: user.username, 
     submitted: new Date(), 
     commentsCount: 0 
    }); 

    var postId = Posts.insert(post); 

    return { 
     _id: postId 
    }; 
    } 
}); 

validatePost = function(post) { 
    var errors = {}; 

    if(!post.title) { 
    errors.title = "Please fill in a headline"; 
    } 
    if(!post.url) { 
    errors.url = "Please fill in a URL"; 
    } else if(post.url.substr(0, 7) != "http://" && post.url.substr(0, 8) != "https://") { 
    errors.url = "URLs must begin with http:// or https://"; 
    } 
    return errors; 
} 

Как бы этот код выглядеть при обновлении использовать Collection2?

+1

Такой пакет потребует некоторых изменений, если вы хотите использовать его в меру своих возможностей. Но это помогло бы _a lot_, если бы вы предоставили некоторый код, такой как код проверки намерений базы данных CRUD, код проверки кода сервера, код клиента, ... Таким образом, мы могли бы привести примеры того, как обновлять код, подходящий для коллекции2, или, может быть, комментировать/исправить свои попытки. –

+0

Спасибо, я добавил код на стороне сервера. – aBe

ответ

1

Я нахожусь в той же лодке, что и вы, я в основном использую autoform для выполнения валидаций keyUp и все. В двух словах коллекция2 будет запускать эквивалент _.pick, пропускать пустые строки, пытаться принудительно вводить входы в типы схем, проверять документ и запускать функцию автоопределения схемы.

check() не будет пытаться принуждать значения, поэтому в некоторых случаях края это полезно, но, как правило, нет необходимости.

Его проверка делает не что иное, как предотвращение вставки. Поэтому вам по-прежнему нужен какой-то код для улучшения работы пользователя. & покажите им, где они перепутались, и у вас уже есть.

Смежные вопросы