Mongresto uppdaterad med sort, skip och limit

Viktigt:

Mongresto är nu en npm-modul, så om du vill uppdatera, ta bort mongresto-filen från din app, ändra i din app.js (för node, i början) från ”./mongresto” till ”mongresto” och lägg till i package.json:

"dependencies":{
   ...other dependencies..
   "mongresto":"*"
}

Kör därefter en ny npm install

Nu har vi (på begäran) lagt till möjligheten att sortera dokument/poster (sort) som hämtas med ngResources via Mongresto, samt även att begränsa antalet poster (limit) samt, om man vill, hoppa över ett visst antal poster (skip).

När vi ändå var inne i Mongresto-koden fixade vi också en bugg som tidigare inneburit att man inte kunde använda regular expressions i underobjekt i sökfrågan/sökobjektet. (Detta påverkade framförallt möjligheten att skriva avancerade $and och $or-frågor.)

Ni som vill använda denna nya funktionalitet kan alltså byta till den nya versionen genom att installera den som en npm-modul (följ anvisningarna överst i artikeln).

Saxat från Mongresto-dokumentationen:

Sorting, skipping and limiting

Suppose that we have the following Mongoose model:

module.exports = function(mongoose){

  // Create a new mongoose schema
  var AnimalSchema = mongoose.Schema({
    name: {type: String, required: true}
    species: {type: String, required: true},
    description: String
  });

  // Return the model
  return mongoose.model("Animal", AnimalSchema);
};

In Mongoose the syntax for sorting, skipping and limiting has changed a lot between versions. However the current syntax follows MongoDB closely. Thus the following backend code for Mongoose would find all rabbits, sort them by name, skip the first 10 documents and deliver the next 5:

// PLEASE NOTE: This is Mongoose code, NOT Mongresto code
Animal.find({species:"rabbit"})
  .sort({name: 1})
  .skip(10)
  .limit(5)
  .exec(function(err,result,errCode){
    var someRabbits = result;
    console.log(someRabbits);
  });

The same code using Mongresto in Angular would look like this:

$scope.someRabbits = Animal.get({
  species: "rabbit",
  _sort: {name: 1},
  _skip: 10,
  _limit: 5
});

Note that it is important in what order you write your properties. Here the result will first be sorted, then a number of documents skipped and lastly the result will be limited to 5 documents.

0 votes