mongoDB and sails aggregate dont work with nodejs


mongoDB and sails aggregate dont work with nodejs



I'm using mongodb and sails framework, Production.find({}) is working normally
but Production.aggregate() is returning an error



Production.aggregate() is not a function


module.exports = {

list : function(req,res) {

Production.aggregate([{
$project: {
data: { $substr: ["$pt",0,10] },
prodTempo: { $substr: ["$sis",0,10]}
}


}])
.exec(function(err,collection ){
if(err){
res.send(500,{error:"DataBase Error"});
}

res.view('list',{producao:collection});

});

}

};




2 Answers
2



For aggregations you need to call the native function first. Then it looks like this:


native


const aggregateArray = [
{
$project: {
data: { $substr: ['$pt', 0, 10] },
prodTempo: { $substr: ['$sis', 0, 10] }
}
}
];

Production.native(function(err, prodCollection) {
if (err) {
// handle error 1
} else {
prodCollection
.aggregate(aggregateArray)
.toArray((err, results) => {
if (err) {
// handle error 2
}

// Do something with your results
});
}
});



As of Sails v1.0 the .native() method is deprecated in favor of getDatastore().manager.



https://sailsjs.com/documentation/reference/waterline-orm/models/native



So the pattern for aggregate would now be as follows:


const aggregateArray = [
{
$project: {
data: { $substr: ['$pt', 0, 10] },
prodTempo: { $substr: ['$sis', 0, 10] }
}
}
];

sails.getDatastore('name of datastore').manager.collection('collection name')
.aggregate(aggregateArray)
.toArray((err, results) => {
if (err) {
// handle error 2
}

// Do something with your results
});






By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Comments

Popular posts from this blog

paramiko-expect timeout is happening after executing the command

Possible Unhandled Promise Rejection (id: 0): ReferenceError: user is not defined ReferenceError: user is not defined

Opening a url is failing in Swift