15 Matching Annotations
  1. Mar 2024
  2. Jan 2024
    1. Instance methods Instances of Models are documents. Documents have many of their own built-in instance methods. We may also define our own custom document instance methods. // define a schema const animalSchema = new Schema({ name: String, type: String }, { // Assign a function to the "methods" object of our animalSchema through schema options. // By following this approach, there is no need to create a separate TS type to define the type of the instance functions. methods: { findSimilarTypes(cb) { return mongoose.model('Animal').find({ type: this.type }, cb); } } }); // Or, assign a function to the "methods" object of our animalSchema animalSchema.methods.findSimilarTypes = function(cb) { return mongoose.model('Animal').find({ type: this.type }, cb); }; Now all of our animal instances have a findSimilarTypes method available to them. const Animal = mongoose.model('Animal', animalSchema); const dog = new Animal({ type: 'dog' }); dog.findSimilarTypes((err, dogs) => { console.log(dogs); // woof }); Overwriting a default mongoose document method may lead to unpredictable results. See this for more details. The example above uses the Schema.methods object directly to save an instance method. You can also use the Schema.method() helper as described here. Do not declare methods using ES6 arrow functions (=>). Arrow functions explicitly prevent binding this, so your method will not have access to the document and the above examples will not work.

      Certainly! Let's break down the provided code snippets:

      1. What is it and why is it used?

      In Mongoose, a schema is a blueprint for defining the structure of documents within a collection. When you define a schema, you can also attach methods to it. These methods become instance methods, meaning they are available on the individual documents (instances) created from that schema.

      Instance methods are useful for encapsulating functionality related to a specific document or model instance. They allow you to define custom behavior that can be executed on a specific document. In the given example, the findSimilarTypes method is added to instances of the Animal model, making it easy to find other animals of the same type.

      2. Syntax:

      Using methods object directly in the schema options:

      javascript const animalSchema = new Schema( { name: String, type: String }, { methods: { findSimilarTypes(cb) { return mongoose.model('Animal').find({ type: this.type }, cb); } } } );

      Using methods object directly in the schema:

      javascript animalSchema.methods.findSimilarTypes = function(cb) { return mongoose.model('Animal').find({ type: this.type }, cb); };

      Using Schema.method() helper:

      javascript animalSchema.method('findSimilarTypes', function(cb) { return mongoose.model('Animal').find({ type: this.type }, cb); });

      3. Explanation in Simple Words with Examples:

      Why it's Used:

      Imagine you have a collection of animals in your database, and you want to find other animals of the same type. Instead of writing the same logic repeatedly, you can define a method that can be called on each animal instance to find similar types. This helps in keeping your code DRY (Don't Repeat Yourself) and makes it easier to maintain.

      Example:

      ```javascript const mongoose = require('mongoose'); const { Schema } = mongoose;

      // Define a schema with a custom instance method const animalSchema = new Schema({ name: String, type: String });

      // Add a custom instance method to find similar types animalSchema.methods.findSimilarTypes = function(cb) { return mongoose.model('Animal').find({ type: this.type }, cb); };

      // Create the Animal model using the schema const Animal = mongoose.model('Animal', animalSchema);

      // Create an instance of Animal const dog = new Animal({ type: 'dog', name: 'Buddy' });

      // Use the custom method to find similar types dog.findSimilarTypes((err, similarAnimals) => { console.log(similarAnimals); }); ```

      In this example, findSimilarTypes is a custom instance method added to the Animal schema. When you create an instance of the Animal model (e.g., a dog), you can then call findSimilarTypes on that instance to find other animals with the same type. The method uses the this.type property, which refers to the type of the current animal instance. This allows you to easily reuse the logic for finding similar types across different instances of the Animal model.

      Certainly! Let's go through each part and explain it in simple terms: ### 1. `this` in Mongoose: - **What is `this`?** In JavaScript, `this` refers to the current context or object. In Mongoose, particularly within methods and middleware functions, `this` represents the instance (document) the function is currently operating on. - **Why is it used?** `this` is used to access and modify the properties of the current document. For example, in a Mongoose method, `this` allows you to refer to the fields of the specific document the method is called on. ### 2. Example: Let's use the `userSchema.pre("save", ...)`, which is a Mongoose middleware, as an example: ```javascript userSchema.pre("save", async function (next) { if (!this.isModified("password")) { next(); } else { this.password = await bcrypt.hash(this.password, 10); next(); } }); ``` - **Explanation in Simple Words:** - Imagine you have a system where users can sign up and set their password. - Before saving a new user to the database, you want to ensure that the password is securely encrypted (hashed) using a library like `bcrypt`. - The `userSchema.pre("save", ...)` is a special function that runs automatically before saving a user to the database. - In this function: - `this.isModified("password")`: Checks if the password field of the current user has been changed. - If the password is not modified, it means the user is not updating their password, so it just moves on to the next operation (saving the user). - If the password is modified, it means a new password is set or the existing one is changed. In this case, it uses `bcrypt.hash` to encrypt (hash) the password before saving it to the database. - The use of `this` here is crucial because it allows you to refer to the specific user document that's being saved. It ensures that the correct password is hashed for the current user being processed. In summary, `this` in Mongoose is a way to refer to the current document or instance, and it's commonly used to access and modify the properties of that document, especially in middleware functions like the one demonstrated here for password encryption before saving to the database.

    Tags

    Annotators

    URL

  3. Dec 2023
  4. Jan 2023
    1. Storytelling Will Save the EarthEmotional resonance, not cold statistics, will bring home the scale of the climate crisis—and the need for action.

      !- Title : Storytelling Will Save the Earth Emotional resonance, not cold statistics, will bring home the scale of the climate crisis—and the need for action. - See related story: Brian Eno – "We need the creative industry to help inspire climate action" https://hyp.is/go?url=https%3A%2F%2Fwww.imperial.ac.uk%2Fnews%2F241832%2Fbrian-eno-we-need-creative-industry%2F&group=world

    1. We know the information. But information is not changing our minds. Most people make decisions on the basis of feelings, including the most important decisions in life – what football team you support, who you marry, which house you live in. That is how we make choices.”  “Thought is at the basis of our feelings, and before we have ideas we have feelings that lead to those ideas. So how do we change minds? A change in feelings changes minds.”

      !- "So how do we change minds? A change in feeling changes minds" : Comment - Brian Eno's comment is very well aligned with Deep Humanity praxis, which can be summed up as: The heart feels, the mind thinks, the body acts, an impact appears in our shared reality. - Also see the related story: - Storytelling will save the Earth: https://hyp.is/go?url=https%3A%2F%2Fwww.wired.com%2Fstory%2Fenvironment-climate-change-storytelling%2F&group=world

  5. Dec 2022
    1. Now picture Timothy, who lives with his grandchildren in Walande Island, a small dot of land off the east coast of South Malaita Island, part of the Solomon Islands. Since 2002, the 1,200 inhabitants of Walande have abandoned their homes and moved away from the island. Only one house remains: Timothy’s. When his former neighbors are asked about Timothy’s motives they shrug indifferently. “He’s stubborn,” one says. “He won’t listen to us,” says another. Every morning his four young grandchildren take the canoe to the mainland, where they go to school, while Timothy spends the day adding rocks to the wall around his house, trying to hold off the water for a bit longer. “If I move to the mainland, I can’t see anything through the trees. I won’t even see the water. I want to have this spot where I can look around me. Because I’m part of this place,” he says. His is a story that powerfully conveys the loneliness and loss that 1.1 degrees of anthropogenic warming is already causing. 

      !- example : storytelling to save the earth

  6. Feb 2022
    1. What tabs would be particularly useful for is new music discovery, like an album you’ve been wanting to get around to hearing but haven’t yet had the time. I bump into this problem quite a bit. Adding a new album to my “Liked” songs on Spotify shuffles it in with all of my favorite stuff, and decluttering that playlist later is a hassle. Making a new album a playlist almost assures that it’ll be forgotten about. My decrepit, goldfish memory doesn’t have the space to remember to return to a playlist of an album two weeks later. As my colleague Victoria notes, she’s always “forgetting what I’m supposed to listen to next.” You know what would help with that? Tabs.
  7. Oct 2021
  8. Jul 2021
    1. For every mile we don't drive, our air gets a little bit cleaner. There are many ways to drive less- walking, biking, taking transit, telecommuting, carpooling, and more. Driving less can also save you money and improve your emotional and physical health. Working from home has been gaining popularity and may offer other benefits such as improved productivity. 

      For every mile we don't drive, our air gets a little bit cleaner. There are many ways to drive less- walking, biking, taking transit, telecommuting, carpooling, and more. Driving less can also save you money and improve your emotional and physical health. Working from home has been gaining popularity and may offer other benefits such as improved productivity.

  9. Jun 2020
  10. May 2018
    1. You can pull the image on a computer that have access to the internet.

      sudo docker pull ubuntu Then you can save this image to a file

      sudo docker save -o ubuntu_image.docker ubuntu Transfer the file on the offline computer (USB/CD/whatever) and load the image from the file:

      sudo docker load ubuntu_image.docker

  11. Jun 2017
  12. Feb 2016
  13. May 2015
    1. Save Work On Focus Lost This feature works best in combo with infinite undo. The idea here is that everytime you leave your Vim window, all your open files are automatically saved. I find this to be extremely helpful, for example when I’m working on a laptop and continuously run unit tests in terminal. My laptop is 13'' so I prefer to run Vim full screen and with this feature, I don’t have to explicitly save my source code file; I just cmd+tab to the terminal, Vim saves the file for me and my unit tests watcher re-runs the suite. If you save unwanted changes by accident you can easily remedy that with undo. To turn autosaving on, add: :au FocusLost * silent! wa to your .vimrc. The silent! flag prevents Vim from complaining when you have open unititled buffers (see this article for details).