Reputation: 87
In my Node JS/Express I am trying to query ID using following code:
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)
}
})
Though record exists with ID - 5eb2818c955bc7202498cd09, function does not return record.
console.log prints "module name is undefined" as output.
Following the luamodule.js in models directory
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.
Upvotes: 0
Views: 337
Reputation: 242
You Can Follow This Code
Model
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)
}
})
Upvotes: 0
Reputation: 1713
node.js is asynchronous, this LuaModule.findById('5eb2818c955bc7202498cd09')
code returns Promise
object.
You have to resolve this promise to get result, try this way
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)
}
})
Upvotes: 1