angularjs - router.post返回错误 "undefined is not a function"。使用mongo和express.js

标签 angularjs node.js mongodb express mongoose

enter image description here我正在尝试使用 LINK 中的文件构建一个应用程序.我发现发布是代码中断的地方。express js 已更改还是语法错误?

router.post 一旦到达 Maid.registerMaid(new Maid({... .我可以使用 .save() 使其工作,但有人可以解释为什么这个回调会发出声音吗?

将代码放在下面..抱歉,我是 M.E.A.N 的初学者

API.js

var express = require('express'),
router = express.Router(),
passport = require('passport');
User = require('../models/user.js');
Maid = require('../models/maid.js');

router.post('/AddMaid', function(req, res) {
 console.log(req.body, req.body.FirstName,req.body.LastName);
Maid.registerMaid(new Maid({ FirstName: req.body.FirstName }), ({LastName: req.body.LastName}), function(err, account) {
    if (err) {
        return res.status(500).json({err : err})
    }
    return res.status(200).json({status: 'Registration successful!'});
});

});

Services.js

angular.module('myApp').factory('AuthService',['$q', '$timeout', '$http',     function ($q, $timeout, $http) {

var user = null;
return ({
  isLoggedIn: isLoggedIn,
  getUserStatus: getUserStatus,
  login: login,
  logout: logout,
  register: register,
  registerMaid: registerMaid
});


function registerMaid(Fname, Lname) { 
    var deferred = $q.defer();

    $http.post('/maid/AddMaid', {
        FirstName : Fname,
        LastName : Lname                
    }).success(function(data, status) {

        if (status === 200 && data.status) {
            deferred.resolve();
        } else {
            deferred.reject();
        }

    }).error(function(data) {
        debugger;
        alert("Error in Services AddMaid");
        deferred.reject();
    });
    return deferred.promise;
} }]); 

Controllers.js

angular.module('myApp').controller('AddMaidController', ['$scope',        '$http','$location', 'AuthService', function($scope, $http,$location,     AuthService) {  
console.log(AuthService.getUserStatus());

$scope.register = function () {
    $scope.error = false;
    $scope.disabled = true;   
         AuthService.registerMaid($scope.registerForm.FirstName,$scope.registerForm.LastName).then(function () {            
        $scope.disabled = false;
        $scope.registerForm = {};

    }).catch(function () {
        $scope.error = true;
        $scope.errorMessage = "Something went wrong!";
    });        
};}]);

maid.js

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

var Maid = new Schema({
First_Name: String,
Last_Name: String
});

module.exports = mongoose.model('maids', Maid); 

最佳答案

首先,您全局定义了用户和女仆模块,这不是一个好的做法。 发生错误是因为您的 Maid 模块(服务器端的 Maid 模型,即 Nodejs)没有 registerMaid 方法。您需要使用 Maid.create 来代替

关于angularjs - router.post返回错误 "undefined is not a function"。使用mongo和express.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34825444/

相关文章:

angularjs - Meteor、Angular 路由、Nginx 和 SSL - 如何通过重写路由/路径到另一台服务器

node.js - HTTP2 - 如何拥有类似 WebSocket 的功能(Keep-Alive、EventSource 等)

node.js - 同时 Mongo 插入是否有限制

node.js - 使用 NPM 在 MacOS 和 Arch Linux 中全局安装 Ngrok 的问题

php - Angularjs,从 IE 中的 url 中删除 #

javascript - ionic : How to make a ng-href link work inside a ui-sref element?

javascript - Mongo只返回数组匹配查询的元素

javascript - mongodb中如何获取某个日期范围内的记录?

c# - 在 C# 中使用 FakeItEasy 制作假 MongoDB 集合

javascript - 在 Angularjs 中,我如何加载相同的 javascript 文件,但为不同的环境(测试、测试版、产品)传递不同的 key