Насколько я знаю, спецификации C ++ ничего не говорят о делении на ноль. Я считаю, что вам нужно сделать это сами ...
Строуструп говорит в «Проекте и эволюции C ++» (Addison Wesley, 1994), «события низкого уровня, такие как арифметические переполнения и делятся на ноль, предполагается, что они обрабатываются выделенным механизмом нижнего уровня, а не исключениями, что позволяет C ++ сопоставлять поведение других языков, когда дело касается арифметики, а также позволяет избежать проблем, возникающих на сильно конвейерных архитектурах, где такие события, как деление на ноль, являются асинхронными. "`
blockquote>
Методы используются для взаимодействия с текущим экземпляром модели. Пример:
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;
});
});
Из статического метода вы также можете создать новый документ, выполнив:
schema.statics.createUser = function(callback) {
var user = new this();
user.phone_number = "jgkdlajgkldas";
user.save(callback);
};
Не думайте, что вам нужно создавать функцию, которая вызывает .save (). Все, что вам нужно сделать перед сохранением модели, можно сделать с помощью .pre ()
. Если вы хотите проверить, создается ли модель или обновляется, сделайте для этого проверку. isNew ()