Статические схемы Мангуста против методов - PullRequest
0 голосов
/ 26 июня 2018

В схеме Мангуста мы можем создать метод двумя способами: SchemaName.methods.fuctionName и SchemaName.statics.functionName . Статику проще использовать, мне просто нужно позвонить ModelName.Fuction . Методы должны создать объект для использования. Мой вопрос, что отличается между ними. В чем преимущество и недостаток статик и методов . Когда я должен использовать статика и когда я должен использовать методы .

// Users.js
UserSchema.statics.findUserStatics = async function(mail) {
    var findUser = await User.findOne({ mail: mail })
    return findUser
}

UserSchema.methods.findUserMethods = async function(mail) {
    var findUser = await User.findOne({ mail: mail })
    return findUser
}

// router.js

const { User } = require('./../models/Users')
router.post('/findbyStatics', async (req, res) => {
    try {
        var result = await User.findUserbyStatics(req.body.mail);
        res.status(200).send(result)
    } catch (e) {
        res.status(400).send(e.message)
    }
})

router.post('/findbyMethods', async (req, res) => {
    try {
        var user = new User()
        var result = await user.findUserbyMethods(req.body.mail);
        res.status(200).send(result)
    } catch (e) {
        res.status(400).send(e.message)
    }
})

1 Ответ

0 голосов
/ 30 июня 2018

Объект statics содержит функции, связанные с самой моделью, а не с отдельными экземплярами. Преимущество использования statics состоит в том, что нам не нужен доступ к экземпляру класса для доступа к функциональности, связанной с ним. Например: в приведенном выше фрагменте кода вы пытаетесь найти пользователя. Вы правильно реализовали статический член. Если бы вы использовали метод , вам потребовалось бы создать экземпляр объекта пользователя для поиска пользователя. Используйте методы , когда у вас уже будут объекты, и используйте statics , когда вы этого не сделаете.

...