Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using AngularJs and MongoDB/Mongoose

I am trying to connect AngularJS with MongoDB using Mongoose. I would like to pass the Models to be used by the Controllers, so I can $scope to the data. I am not sure if I have to go about setting up an Angular Service, if so, can you point me in the right direction. Thank You.

Overview:

Model:

var mongoose = require('mongoose');
var db = mongoose.createConnection('mongodb://localhost:3000/database');
var orderSchema = new mongoose.Schema({
    routeFrom : String,
    routeTo : String,
    leaving: String
});
var Order = db.model('Order', orderSchema);
module.exports = Order;

Controller:

// of course 'require' does not work but you get the idea
function OrderController($scope) {
  return $scope.orders = Order.find({});
}
like image 390
ashley Avatar asked Dec 14 '12 15:12

ashley


2 Answers

You'll need an interim step there. Going directly from Angular to Mongo will not work out. If you want a generic REST interface to Mongo with which you can utilize Angular's bundled $http services, take a look at the list of REST services on Mongo's site.

Mongo REST Services

http://www.mongodb.org/display/DOCS/Http+Interface#HttpInterface-RESTInterfaces

Angular $http Service:

http://docs.angularjs.org/api/ng.$http

There's a lot of different options here, but this is likely the easiest way to get up and going.

like image 134
jasonpincin Avatar answered Oct 09 '22 23:10

jasonpincin


The interim step has been provided by a npm module, angoose. It does exactly what you asked for: making the mongoose models available as Angular injectable factories. All you need to do is just including a script tag in your html file.

angoose module:

https://npmjs.org/package/angoose

Disclaimer: I'm the contributor of angoose module.

like image 10
TJWorks Avatar answered Oct 10 '22 01:10

TJWorks