Создание методов для обновления & amp; сохранить документы с мангустом?

Насколько я знаю, спецификации C ++ ничего не говорят о делении на ноль. Я считаю, что вам нужно сделать это сами ...

Строуструп говорит в «Проекте и эволюции C ++» (Addison Wesley, 1994), «события низкого уровня, такие как арифметические переполнения и делятся на ноль, предполагается, что они обрабатываются выделенным механизмом нижнего уровня, а не исключениями, что позволяет C ++ сопоставлять поведение других языков, когда дело касается арифметики, а также позволяет избежать проблем, возникающих на сильно конвейерных архитектурах, где такие события, как деление на ноль, являются асинхронными. "`

29
задан Industrial 24 January 2012 в 13:45
поделиться

3 ответа

Методы используются для взаимодействия с текущим экземпляром модели. Пример:

var AnimalSchema = new Schema({
    name: String
  , type: String
});

// we want to use this on an instance of Animal
AnimalSchema.methods.findSimilarType = function findSimilarType (cb) {
  return this.find({ type: this.type }, cb);
};

var Animal = mongoose.model('Animal', AnimalSchema);
var dog = new Animal({ name: 'Rover', type: 'dog' });

// dog is an instance of Animal
dog.findSimilarType(function (err, dogs) {
  if (err) return ...
  dogs.forEach(..);
})

Статика используется, когда вы не хотите взаимодействовать с экземпляром, но делаете вещи, связанные с моделью (например, ищите всех животных с именем «Ровер»).

Если вы хотите вставить / обновить экземпляр модели (в БД), тогда вам нужно methods. Если вам просто нужно сохранить / обновить материал, вы можете использовать функцию save (уже существует в Mongoose). Пример:

var Animal = mongoose.model('Animal', AnimalSchema);
var dog = new Animal({ name: 'Rover', type: 'dog' });
dog.save(function(err) {
  // we've saved the dog into the db here
  if (err) throw err;

  dog.name = "Spike";
  dog.save(function(err) {
    // we've updated the dog into the db here
    if (err) throw err;
  });
});
49
ответ дан alessioalex 24 January 2012 в 13:45
поделиться

Из статического метода вы также можете создать новый документ, выполнив:

schema.statics.createUser = function(callback) {
  var user = new this();
  user.phone_number = "jgkdlajgkldas";
  user.save(callback);
};
58
ответ дан hydrozen 24 January 2012 в 13:45
поделиться

Не думайте, что вам нужно создавать функцию, которая вызывает .save (). Все, что вам нужно сделать перед сохранением модели, можно сделать с помощью .pre ()

. Если вы хотите проверить, создается ли модель или обновляется, сделайте для этого проверку. isNew ()

1
ответ дан Xerri 24 January 2012 в 13:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: