2015-04-17 3 views
2

Вот что я пытаюсь сделать:Autoincrement метеор simpleschema член

SimpleSchema.FaqSchema = new SimpleSchema 
    order: 
    type: Number 
    autoValue: -> 
     # somehow increment this by 1 
    updatedAt: 
    type: Date 
    autoValue: -> 
     new Date 
    updatedBy: 
    type: String 
    autoValue: -> 
     Meteor.userId() 
    question: type: String 
    answer: type: String 

К сожалению, нет ничего в Метеор документации или simpleschema документации по этому вопросу, который объясняет, как это сделать. Здесь есть mongo docs: http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/

Однако это на самом деле не помогает.

Любая помощь приветствуется. Схема находится в coffeescript, но может быть преобразована с использованием http://js2.coffee/

ответ

2

Создайте метод Метеор на стороне сервера, который увеличивает поле заказа на 1 во время вставок. Этот метод использует meteor-mongo-counter пакет, который реализует метод "Прилавки Collection", описанной в документации MongoDB Create an Auto-Incrementing Sequence Field:

сервера

Meteor.methods 
    "insertDocument": (doc) -> 
     doc.order = incrementCounter "order" 
     MyCollection.insert doc 
     doc.order 

Клиент

doc = 
    question: "Question 1" 
    answer: "Answer 1" 

# Instead of inserting with Collection.insert doc, use Meteor.call instead 

Meteor.call "insertDocument", doc, (err, result) -> 
    if result console.log "Inserted order number #{result}" 
+1

Не думаю, атомной операции. Хорошая находка. –

+0

@AdnanY Cheers! – chridam

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