Mongoose global & ldquo; pre save & rdquo; крючок [дубликат]

Если вы хотите реализовать или расширить любой другой класс, тогда интерфейс Runnable наиболее предпочтителен, если вы не хотите, чтобы какой-либо другой класс расширялся или реализовывался, тогда предпочтительнее Thread класс

. наиболее распространенная разница -

enter image description here [/g1]

Когда вы extends Thread класс, после этого вы не можете продлить какой-либо другой класс, который вам нужен. (Как вы знаете, Java не позволяет наследовать более одного класса).

Когда вы implements Runnable, вы можете сохранить пространство для своего класса для расширения любого другого класса в будущем или сейчас.

  • Java не поддерживает множественное наследование, что означает, что вы можете продлить один класс только на Java, поэтому, как только вы расширили класс Thread, вы потеряли свой шанс и не можете продлить или наследовать другой класс в Java.
  • В объектно-ориентированном программировании расширение класса обычно означает добавление новых функций, изменение или улучшение поведения. Если мы не вносим никаких изменений в Thread, используйте вместо этого интерфейс Runnable.
  • Runnable interface представляет собой задачу, которая может быть выполнена либо простым потоком, либо исполнителями, либо любыми другими способами. поэтому логическое разделение Задачи как Runnable than Thread является хорошим конструктивным решением.
  • Разделительная задача как Runnable означает, что мы можем повторно использовать задачу, а также иметь возможность выполнять ее с разных средств. так как вы не можете перезапустить Thread после его завершения. снова Runnable vs Thread для задачи, Runnable - победитель.
  • Разработчик Java признает это, и поэтому Исполнители принимают Runnable as Task, и у них есть рабочий поток, который выполняет эту задачу.
  • Наследование всей темы методы - дополнительные накладные расходы только для представления задачи, которая может быть легко выполнена с помощью Runnable.

Предоставлено из javarevisited.blogspot.com

Эти были заметной разницей между Thread и Runnable в Java, если вы знаете какие-либо другие отличия от Thread vs Runnable, чем поделиться ими с помощью комментариев. Я лично использую Runnable over Thread для этого сценария и рекомендую использовать интерфейс Runnable или Callable на основе вашего требования.

Однако существенная разница.

Когда вы extends Thread класс, каждый из ваших потоков создает уникальный объект и связывается с ним. Когда вы implements Runnable, он разделяет один и тот же объект на несколько потоков.

1
задан G. Deward 17 August 2016 в 15:06
поделиться

2 ответа

Плагины могут не регистрироваться в mongoose.plugin(myMongoosePlugin), поскольку модели mongoose создаются до того, как вы регистрируете плагины по всему миру.

  • Если у вас есть expressjs маршруты:

Убедитесь, что в вашем app.js (server.js) вы регистрируете плагины mongoose, прежде чем регистрируете / создаете маршруты expressjs (которые используют монгонговые модели для связи с базой данных).

Пример:

в app.js

const express = require(express);
const mongoose = require('mongoose');
const myMongoosePlugin = require('<Mongoose Plugin file path>');

mongoose.plugin(myMongoosePlugin);

let app = express();

//register expressjs routes
require('<Express routes file path>')(app, express.Router());

// or create expressjs routes
app.post('/person', (req, res, next) => {
    //where someMethod is using person mongoose model
    this.someController.someMethod(someArguments)
        .then((user) => {
            res.json(user);
        }).catch((error) => {
            next(error);
        });
});

// ... Some other code ...
mongoose.connect(<databaseConnectionString>);
app.listen(<Port>);
0
ответ дан Andrei Surzhan 18 August 2018 в 20:32
поделиться

Попробуйте использовать вашу модель также в файле app.js. Где-то после mongoose.plugin(testPlugin).

1
ответ дан Petar A. 18 August 2018 в 20:32
поделиться
  • 1
    Это был и мой вопрос. Я настраивал плагины асинхронно и ошибочно загружал модель до того, как эта настройка была закончена. Таким образом, плагин никогда не имел возможности применить себя к модели. – Adam Reis 31 December 2017 в 02:57
Другие вопросы по тегам:

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