Surendar
Surendar

Reputation: 153

Cannot read property 'columnName' of undefined in sails Js Mongo DB

I am using sails JS with Mongo DB. My model is:

module.exports = {
  attributes: {
    title:{type:"string",required:true},
    content:{type:"string",required:true},
    date:{type:"string",required:true},
    filename:{type:"string",required:true},
  },
};

My Controller is:

fetchposts:function(req,res){
        console.log("in fetch posts")
        mysort={$id:-1}
  
       Cyberblog.find().sort(mysort).limit(5).exec(function(err, result) {
            if (err || !result) {
                 message="no records fetched";
                 console.log(message);
                 res.redirect('/newpost');
                 }
             else{
                console.log(result)
             }   

I am facing an error saying that

"Warning: The sort clause in the provided criteria is specified as a dictionary (plain JS object), meaning that it is presumably using Mongo-Esque semantics (something like { fullName: -1, rank: 1 }). But as of Sails v1/Waterline 0.13, this is no longer the recommended usage. Instead, please use either a string like 'fullName DESC', or an array-like [ { fullName: 'DESC' } ]. (Since I get what you mean, tolerating & remapping this usage for now...)

and I am unable to fetch any records. It is showing no records fetched.

So I have one warning on Sort and no records coming from DB. Please help me resolve the issue.

Upvotes: 0

Views: 552

Answers (1)

Jorge Vargas
Jorge Vargas

Reputation: 301

Sort clause allow send string:

var users = await User.find({ name: 'Jake'})
.sort('age ASC');

return res.json(users);

Or an array:

var users = await User.find({ name: 'Finn'})
.sort([
  { age: 'ASC' },
  { createdAt: 'ASC' },
]);

return res.json(users);

Check this out in the documentation:

https://sailsjs.com/documentation/reference/waterline-orm/queries/sort

Upvotes: 1

Related Questions