使用Angularjs和nodejs进行Mongodb CRUD操作-如果数据已经存在,如何从数据库中获取消息?

Posted

技术标签:

【中文标题】使用Angularjs和nodejs进行Mongodb CRUD操作-如果数据已经存在,如何从数据库中获取消息?【英文标题】:Mongodb CRUD operation with Angularjs and nodejs - How to get message from database if data is already exist? 【发布时间】:2016-03-25 20:49:54 【问题描述】:

在 controller.js 中:

angular.module('CRUD').controller('myController',['$scope','$http', function($scope,$http)
    $scope.sendData = function()
        console.log($scope.data1);
        var formData = 
        "username" :$scope.username,
        "email"    :$scope.email
    ;

    $http(
        url:'/formData',
        method:'POST',
        data:formData
    ).success(function(data)
        console.log(data);
    );



]).directive("myFirstDirective",function()
    return
    
        template:"<b>custom directive</b>",
        restrict:'E';
    
);

【问题讨论】:

【参考方案1】:
    在你的 nodeJS 路由 API 中

//User Schema
'use strict';

var mongoose = require('mongoose');
var Schema = mongoose.Schema;


var UserSchema = new Schema(
  username: String,
  email: 
    type: String,
    unique: true //means the email has to be unique across all documents
  
);

UserSchema.path('email').validate(function(value, done) 
    this.model('User').count( email: value , function(err, count) 
        if (err) 
            return done(err);
         
        // If `count` is greater than zero, "invalidate"
        done(!count);
    );
, 'Email already exists');

module.exports = mongoose.model('User', UserSchema);

...

//API 
app.post('/formData', function(req, res)
    User.create(req.body, function(err)
        if (!err)
           res.send(200); //user created
        
        else 
           if (err.name === 'ValidationError') res.send(409); //stands for form validation error
           else res.send(500);
        
    );
);
    将请求放入服务的良好做法。例如

angular.module('CRUD').controller('myController',['$scope','$http', 'CRUDService', function($scope,$http, CRUDService)
    $scope.sendData = function()
      CRUDService.createUser(
          username: $scope.username,
          email: $scope.email
      ).then(function(res)
         //all good user was created
      , function(err)
         //error, failed to create user
         if (err.status === 409)
            //email already exists
         
      );
    
]).service('CRUDService', ['$http', function($http)
  this.createUser = function(postData)
     return $http.post('/formData', postData);
  
]);

【讨论】:

以上是关于使用Angularjs和nodejs进行Mongodb CRUD操作-如果数据已经存在,如何从数据库中获取消息?的主要内容,如果未能解决你的问题,请参考以下文章

使用 nodejs、angularjs 和 paypal sdk 付款结果 cors 错误

MongoError: 必须使用 Mongo DB Native NodeJS Driver 对所有 $meta 排序键进行 $meta 投影

Angularjs + nodejs + 护照跨域请求

无法提取地理键(nodejs 和 mongo)

nodejs如何使用mongo数据库

干货|使用AngularJS+nodejs实现聊天室