`In NestJS Nested Schema, the @Prop decorator and mongoose options are not applied as expected

I'm currently working on constructing a Schema that includes a nested object. I am trying to define default values and required properties within the nested object, but it seems like the options I set are being ignored.

task.entity.ts

@Schema()
export class Task {
    @Prop({ required: true }) // This is functioning correctly
    language: Language

    @Prop({ type: TaskContent, required: true })
    content: TaskContent
}

class TaskContent extends Document {
    @Prop({ required: true, default: "Hello World" }) // The settings for this property are not taking effect.
    message: string
}

export type TaskDocument = Task & Document
export const TaskSchema = SchemaFactory.createForClass(Task)

Within my task.service.ts:

const task = new this.taskSchema({
...dataFromPostRequest
})
const result = await task.save()
return result

Is there a way I can properly include an object while utilizing the @Prop options from the nested object? I prefer not to consolidate everything into one class, but rather split them up as intended.

Answer №1

In order to create a structured format, you must construct a Schema and designate it as the type:

@Schema()
export class Assignment {
    @Prop({ required: true })
    category: Category
 
    @Prop({ type: TaskDetailsSchema, required: true }) // This section
    details: TaskDetails
}
 
class TaskDetails extends Document {
    @Prop({ required: true, default: "Welcome Everyone" })
    note: string
}
 
const TaskDetailsSchema = SchemaFactory.createForClass(TaskDetails) // This section
 
export type AssignmentDocument = Assignment & Document
export const AssignmentSchema = SchemaFactory.createForClass(Assignment)
 

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Redirect to URL using Ajax upon successful completion

I'm facing an issue with my function as it doesn't redirect after a successful operation. I'm not sure why the redirection is not happening consistently. Sometimes, adding ...href after e.preventDefault(); seems to work. $('#nadwozie&a ...

Navigating with Express while incorporating React

I am struggling to set up the routes for my web application using Express, as well as incorporating React for the front end. The issue lies in properly routing things when React components are involved. My index.html contains: <script> document.get ...

Save the result of a terminal command into an sqlite database

When I run a particular shell command in node js, the output is displayed on the console. Is there a method to store this output in a variable so that it can be POSTed to an Sqlite database? const shell = require('shelljs'); shell.exec('a ...

Counting the number of key-value pairs for a specific key in a JSON data can be achieved by implementing

Is there a way to determine if __metadata and ItemToEkbeNav are the root elements for their children who have key-value pairs? I've attempted various methods such as Object.keys().length and Array.isArray(), but haven't been able to retrieve the ...

An error arises when using the command window.close()

I have encountered an issue with this code where it closes all Safari windows but works fine in Internet Explorer. What should I do? Is there an alternative method for closing the current opened window in every browser? <input type='button' v ...

Shifting hues with every upward and downward movement

I am experiencing a small issue with this JS code... -I have multiple divs that are changing automatically in rows as they move randomly... I want to change the color of the div moving up to green. And for the div moving down, I want to change the colo ...

What is the importance of fulfilling a promise in resolving a response?

I have a promise structured as follows: let promise = new Promise((resolve, reject) => { axios.post("https://httpbin.org/post", params, header) .then(response => { resolve(Object.assign({}, response.data)); // resolve("aaaa"); ...

Determine the number of items in an array with JavaScript in Node

Looking to create a new variable that counts the names in an array and assigns them accordingly? I'm currently stuck on this task. The array contains names: names = [Jan, Jan, Jana] Counting the names is simple, but I'm facing difficulty in org ...

From SQL to MapReduce: Exploring alternative methods for calculating averages in MongoDB

What is the best way to implement the SQL avg function in MapReduce MongoDB? I am currently summing the values and dividing by the count, but I'm unsure if this should be done in the reduce function or finalize function. For instance, consider the fo ...

Troubleshooting issues with AngularJS's minDate functionality

I have been trying to set the minDate for the datepicker to today, following the example on the angularJS bootstrap site. However, it seems like something is not working correctly. There are no console errors showing up, but it appears that the minDate is ...

The functionality of fetching website titles using Ajax/jQuery is experiencing some limitations

Below is a code snippet for a simple website title getter: $( document ).ready(function() { $("#title").click(function() { var SubURL = $("#input").val(); $.ajax({ url: "http://textance.herokuapp.com/title/"+SubURL+"/", complete: function(da ...

Using dynamic classes within a v-for loop

Edited How can I dynamically assign classes to multiple elements within a v-for loop? Since I cannot utilize a computed property due to the presence of v-for, I attempted using a method by passing the index of the element, but that approach did not yield t ...

Is there a way to insert a row into a datatable without needing to perform an Ajax reload or using the

When using row.add(…) on a datatable, I encounter an issue where it refreshes via an ajax call when draw() is activated. This leads to the new row not being visible because the data is reloaded from the database. The UX flow behind this scenario is as f ...

A guide on coding the source tag script for a payment form in CodeIgniter, specifically for a JavaScript form

Scenario: I have a variable called $data['tabdata'] that I am passing from controller C to view V. This variable includes a script element pointing to http://example.com/1.js. Problem: The script in 1.js is not running properly in the view. This ...

Incorporating a delay into looped HTTP requests while effectively utilizing Promise.all to track their completion

Greetings! In my current project, I am trying to introduce a 50ms delay before each subsequent HTTP request is sent to the server. Additionally, I aim to incorporate a functionality that triggers after all requests have been successfully made. To better e ...

What are some recommended methods in Angular for developing reusable panels with both controller and view templates?

I am still getting acquainted with angularjs, so there might be something I'm overlooking, but I'm struggling to find an efficient way to create reusable views that can be instantiated within a parent view. My specific scenario involves a web ap ...

Issue with updating in MongoDB using Node.js with db.open()

I've encountered an issue while using the node.js MongoDo native library. The code snippet provided is not functioning as expected. The db.open call fails without throwing any errors. Despite having console.log statements within the db.open call, the ...

The attribute selector specifically targets the number 3, excluding numbers such as 13 or 23 from being selected

Within a form, there is a segment that displays groups of 4 weeks in each division. Take a look at the code snippet provided below <div class="form-check" data-weeknr="1,2,3,4"></div> <div class="form-check" dat ...

An issue occurred with Ionic 4: TypeError - Unable to access property 'name' as it is undefined

None of the answers to similar questions have provided a solution for me SITUATION: I've been setting up a SQL Server connection from my Ionic app. You can check out my previous question for more details The workflow goes as follows: Ionic connects ...

Learning about the intricacies of backend Node.js through Angular using GET requests

I am having trouble retrieving the query parameters from a frontend GET request on the backend side. I have attempted to use url and query, but still need assistance fetching the query on the nodejs side. Can someone recommend a method that would allow me ...