2015-08-19 2 views
0
var app = angular.module('app', []); 
app.controller('MainCtrl', function($scope) { 

     // var Answer = require("mongoose"); 

     $scope.circles = [ 
      JSON.parse("{\"x\": 85, \"y\": 20, \"r\":15}"), 
      /* much more similar entries */ 
     ]; 


); 
angular.bootstrap(document.getElementById('body'), ["app"]); 

Мой вопрос очень прост:Сохранение матрицы в базу данных MongoDB

У меня есть этот AngularJS код очень простой SPA.

Как сохранить круги массива на стороне сервера (внутри базы данных) или, более конкретно, как я могу написать контроллер сервера, который позволяет мне делать такую ​​вещь?

+0

Как вы хотите использовать сохраненные данные? Вы спрашиваете, как документ должен храниться? Или вы спрашиваете, как написать код из этой точки, чтобы сохранить документ в базе данных? –

+0

Отправьте его на сервер с помощью '$ http'. Вам было сказано несколько раз, что взаимодействие с базой данных выполняется только на сервере – charlietfl

+0

@BlakesSeven Я хочу использовать данные на второй странице, используя как маршрут или что-то подобное, чтобы люди могли его изменить и сохранить в БД. Поэтому я спросил, как написать код с этой точки, чтобы сохранить документ в БД. –

ответ

0

Хмм хорошо, о последующей деятельности в связи с обсуждением замечаний, будет ли это реальный способ, чтобы написать контроллер для передачи данных на сервер:

var dbtest = angular.module('dbtest',[]); 
var app = angular.module('app', ['dbmodule']); 

app.controller('MainCtrl', function($scope) { 

     // var Answer = require("mongoose"); 

     $scope.circles = [ 
      JSON.parse("{\"x\": 85, \"y\": 20, \"r\":15}"), 
      /* much more similar entries */ 
     ]; 



); 

dbtest.controller("dbtest",function($http) { 
    var app = this; 
    //var url=... 
    app.SaveAnswer = function (newAnswer) { 
     $http.post(url+"/add", {circle:$scope.circles}).success(function() { 
      console.log("Success"); 
     }) 
    }; 

angular.bootstrap(document.getElementById('body'), ["app"]); 
//maybe another bootstrap is needed... angular.bootstrap(document.getElementById('dbtest'), ["dbtest"]); 

Тогда для метода POST на сервере side, server.js, я бы добавил что-то вроде этого:

var express = require("express"); 
var app = express(); 
var cors = require("cors"); 
var bodyParser=require("body-parser"); 
app.use(cors()); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ 
    extended: true 
})); 

var Answer = require('../db/db_model'); 

app.post("/add", function(req, res){ 
    var resp = req.circles; 
    var answer = new Answer({ans: resp}); 
    answer.save(function(err){ 
     if(err){ 
      console.log("Error"); 
     } 
     else{ 
      console.log("Saved");} 
    }); 
}); 

//Change this in deployment to port.env or similar 
app.listen(3000, function() { 
    console.log("Port 3000 connected"); 
}); 

Правильно ли что-то подобное? Тогда я могу использовать dbtest контроллер на HTML, чтобы при нажатии пользователем кнопки матрица сохраняется в БД, не так ли?

Смежные вопросы