Node JS / Mon goose - model.findbyID не возвращает запись, хотя существует - PullRequest
0 голосов
/ 06 мая 2020

В моем узле JS / Express я пытаюсь запросить идентификатор, используя следующий код:


router.get('/module/:id/',  (req, res ) => {
    try {
        console.log('in get module')
        const luamodule =  LuaModule.findById('5eb2818c955bc7202498cd09')
        console.log('module name is ' + luamodule.name)
    } catch (error) {
        console.log('In error --> ' + error)
        res.status(404).send(error.Message)
    }
})

Хотя существует запись с идентификатором - 5eb2818c955bc7202498cd09, функция не возвращает запись.

console.log выводит «имя модуля не определено».

После luamodule. js в каталоге моделей

const validator = require('validator')

const luaModuleSchema = new mongoose.Schema({
    name: {
        type: String,
        required: true,
        trim: true
    },
    email: {
        type: String,
        // unique: true,
        required: true,
        trim: true,
        lowercase: true,
        validate(value) {
            if (!validator.isEmail(value)) {
                throw new Error('Email is invalid')
            }
        }
    },
    environment: {
        type: String,
        required: true,
        trim: true,

    },
    description: {
        type: String,
        required: true,
        trim: true,

    },
    modulefile: {
        type: Buffer
    },

})

const luaModule = mongoose.model('LuaModule', luaModuleSchema)

module.exports = luaModule ```

End objective of  the exercise is to accept the parameters from client and return the zip file stored into database.

Appreciate any help in  this regard.

Ответы [ 2 ]

1 голос
/ 06 мая 2020

node.js является асинхронным, этот код LuaModule.findById('5eb2818c955bc7202498cd09') возвращает Promise объект.

Вы должны выполнить это обещание, чтобы получить результат, попробуйте таким образом

router.get('/module/:id/', async (req, res ) => {
    try {
        console.log('in get module')
        const luamodule = await LuaModule.findById('5eb2818c955bc7202498cd09')
        console.log('module name is ' + luamodule.name)
    } catch (error) {
        console.log('In error --> ' + error)
        res.status(404).send(error.Message)
    }
})
0 голосов
/ 06 мая 2020

Вы можете следовать этому коду

Модель

const validator = require('validator')

const luaModuleSchema = new mongoose.Schema({
    name: {
        type: String,
        required: true,
        trim: true
    },
    email: {
        type: String,
        // unique: true,
        required: true,
        trim: true,
        lowercase: true,
        validate(value) {
            if (!validator.isEmail(value)) {
                throw new Error('Email is invalid')
            }
        }
    },
    environment: {
        type: String,
        required: true,
        trim: true,

    },
    description: {
        type: String,
        required: true,
        trim: true,

    },
    modulefile: {
        type: Buffer
    },

})

const LuaModule = mongoose.model('LuaModule', luaModuleSchema)

module.exports = LuaModule

> Controller

router.get('/module/:id/', async (req, res ) => {
    try {
        console.log('in get module')
        const luamodule =await LuaModule.findById('5eb2818c955bc7202498cd09')
        console.log('module name is ' + luamodule.name)
    } catch (error) {
        console.log('In error --> ' + error)
        res.status(404).send(error.Message)
    }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...