Как добавить новый объект с AngularJS и mongoDB

0

Я использую NodeJS, ANgularJS и MongoDB с мангустом, чтобы сделать сайт. У меня возникли проблемы с добавлением объекта в mongoDB. Имя объекта - Todo.

Вот модели Todo:

var mongoose = require('mongoose');
var TodoSchema = new mongoose.Schema({
    name: String,
    password : String,
    completed: Boolean,
    note: String  
});

module.exports = mongoose.model('Todo', TodoSchema);

В контроллере я создаю новый Todo и нажимаю его

angular.module('app').controller('Connexion', ['$scope', 'Todos','$location', function($scope,Todos, $location) {

$scope.editing = [];
$scope.todos = Todos.query();

$scope.save = function() {
    var todo = new Todos({ name: "test", password: "test", completed: false });
        $scope.todos.push(todo);
        Todos.save($scope.todo);
}
}]);

Это моя html-страница, каждый раз, когда я нажимаю кнопку "У меня есть новое todo, созданное и отображаемое на экране:

   <button ng-click="save()">Creer POST </button>

    <ul>
        <li ng-repeat="todo in todos">
            {{todo.name}}
            {{todo.password}}

       </li>
   </ul>

Но у меня проблема, новый объект не добавляется в базу данных. Как мне это сделать?

Это мои файлы в фоновом режиме:

var express = require('express');
var router = express.Router();

var mongoose = require('mongoose');
var Todo = require('../models/Todo.js');

/* GET /todos listing. */
router.get('/', function(req, res, next) {
   Todo.find(function (err, todos) {
      if (err) return next(err);
           res.json(todos);
   });
});

/* POST /todos */
router.post('/', function(req, res, next) {
   Todo.create(req.body, function (err, post) {
      if (err) return next(err);
        res.json(post);
   });
});

/* GET /todos/id */
router.get('/:id', function(req, res, next) {
   Todo.findById(req.params.id, function (err, post) {
       if (err) return next(err);
          res.json(post);
    });
});


/* PUT /todos/:id */
router.put('/:id', function(req, res, next) {
   Todo.findByIdAndUpdate(req.params.id, req.body, function (err, post) {
       if (err) return next(err);
          res.json(post);
   });
});

/* DELETE /todos/:id */
router.delete('/:id', function(req, res, next) {
    Todo.findByIdAndRemove(req.params.id, req.body, function (err, post) {
     if (err) return next(err);
       res.json(post);
  });
});

module.exports = router;

И если это может помочь этому, то back-end файл app.js

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var mongo = require('mongodb');
var Post = require('./models/Post.js');

var routes = require('./routes/index');

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/todoApp', function(err) {
   if(err) {
      console.log('connection error', err);
   } else {
      console.log('connection successful');
   }
});


var app = express();
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', function(req, res, next){
res.sendFile(__dirname + '/public/index.html');
});

var found = ['DB Connection not yet established.  Try again later.   Check the console output for error messages if this persists.'];


module.exports = app;
  • 0
    Что из этого должно произойти на сервере? А что в приложении Angular на браузере пользователя? Mongoose - это модуль Node.js для доступа к базе данных на стороне сервера, Angular используется для создания веб-сайтов. Я рекомендую вам прочитать о том, как работает стек MEAN.
  • 0
    Можете ли вы опубликовать, какой код находится на вашем сервере? Но, может быть, вам лучше прочесть что-нибудь о стеке MEAN, прежде чем пытаться что-то с ним делать, особенно в части сервера.
Показать ещё 3 комментария
Теги:
mongoose

1 ответ

0
Лучший ответ

$scope.todo от Todos.save($scope.todo); не определено, поэтому поэтому вам не удастся ничего сохранить

  • 0
    Да, я пытаюсь сделать это внутри $ scope.save = function (). Я поместил это: todo. $ Save (function () {$ scope.todos.push (todo)}); Но todo не хочет идти в базу данных
  • 0
    вы нигде не определили $ scope.todo , у вас есть локальная переменная todo и массив $ scope.todos
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню