2016-10-06 2 views
1

MEAN 스택 언어를 사용하여 간단한 로그인과 가입을 만들었습니다. 사용자가 이름, 주소 등과 같은 정보를 편집 할 수있는 프로필 페이지가 있습니다. 입력 유형 "텍스트"필드를 저장하고 검색 할 수 있습니다. 이미지 업로드 기능을 추가하고 업로드 된 이미지를 검색하려면 어떻게합니까? 인스턴트 스택에 새로운 그래서 아무도 나를 도울 수 있습니까? 감사.Node Express 4를 사용하여 이미지 업로드 및 검색 MongoDB

내 server.js 저장이

require('rootpath')(); 
var express = require('express'); 
var app = express(); 
var session = require('express-session'); 
var bodyParser = require('body-parser'); 
var expressJwt = require('express-jwt'); 
var config = require('config.json'); 

app.set('view engine', 'ejs'); 
app.set('views', __dirname + '/views'); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(bodyParser.json()); 
app.use(session({ secret: config.secret, resave: false, saveUninitialized: true })); 

// use JWT auth to secure the api 
app.use('/api', expressJwt({ secret: config.secret }).unless({ path: ['/api/users/authenticate', '/api/users/register'] })); 

// routes 
app.use('/login', require('./controllers/login.controller')); 
app.use('/register', require('./controllers/register.controller')); 
app.use('/app', require('./controllers/app.controller')); 
app.use('/api/users', require('./controllers/api/users.controller')); 


// make '/app' default route 
app.get('/', function (req, res) { 
    return res.redirect('/app'); 
}); 

// start server 
var server = app.listen(3000, function() { 
    console.log('Server listening at http://' + server.address().address + ':' + server.address().port); 
}); 

HTML과보기 데이터가이

<h1>My Account</h1> 
    <div class="form-container"> 
     <form method="post" > 
      <div class="form-group"> 
       <label for="firstName">First name</label> 
       <input type="text" id="firstName" class="form-control" ng-model="vm.user.firstName" required /> 
      </div> 
      <div class="form-group"> 
       <label for="lastName">Last name</label> 
       <input type="text" id="lastName" class="form-control" ng-model="vm.user.lastName" required /> 
      </div> 
      <div class="form-group"> 
       <label for="username">Username</label> 
       <input type="text" id="username" class="form-control" ng-model="vm.user.username" required /> 
      </div> 
      <div class="form-group"> 
       <label for="password">Password</label> 
       <input type="password" id="password" class="form-control" ng-model="vm.user.password" /> 
      </div> 
      <div class="form-group"> 
       <label for="address">Address</label> 
       <input type="text" id="password" class="form-control" ng-model="vm.user.address" /> 
      </div> 
      <div class="form-group"> 
       <button class="btn btn-primary" ng-click="vm.saveUser()">Save</button> 
       <button class="btn btn-danger" ng-click="vm.deleteUser()">Delete</button> 
      </div> 
     </form> 
    </div> 
<!-- View Data --> 
    <div class="col-md-12"> 
     <h1>Hi {{vm.user.firstName}}!!</h1> 
     <p><strong>User Name :</strong> {{vm.user.username}} </p> 
     <p><strong>Full Name : </strong> {{vm.user.firstName}} {{ vm.user.lastName}}</p> 
     <p><strong> Your address is : </strong> {{vm.user.address}}</p> 
    </div> 

과 같은 저장 app.js이

(function() { 
    'use strict'; 

    angular 
     .module('app') 
     .controller('Account.IndexController', Controller); 

    function Controller($window, UserService, FlashService) { 
     var vm = this; 

     vm.user = null; 
     vm.saveUser = saveUser; 
     vm.deleteUser = deleteUser; 

     initController(); 

     function initController() { 
      // get current user 
      UserService.GetCurrent().then(function (user) { 
       vm.user = user; 
      }); 
     } 

     function saveUser() { 
      UserService.Update(vm.user) 
       .then(function() { 
        FlashService.Success('User updated'); 
       }) 
       .catch(function (error) { 
        FlashService.Error(error); 
       }); 
     } 

     function deleteUser() { 
      UserService.Delete(vm.user._id) 
       .then(function() { 
        // log user out 
        $window.location = '/login'; 
       }) 
       .catch(function (error) { 
        FlashService.Error(error); 
       }); 
     } 
    } 

})(); 

및 사용자처럼 보인다 db에 데이터를 업데이트하는 데 사용되는 .service.js는

입니다.
function updateUser() { 
    // fields to update 
    var set = { 
     firstName: userParam.firstName, 
     lastName: userParam.lastName, 
     username: userParam.username, 
     address: userParam.address, 
    }; 

    // update password if it was entered 
    if (userParam.password) { 
     set.hash = bcrypt.hashSync(userParam.password, 10); 
    } 

    db.users.update(
     { _id: mongo.helper.toObjectID(_id) }, 
     { $set: set }, 
     function (err, doc) { 
      if (err) deferred.reject(err.name + ': ' + err.message); 

      deferred.resolve(); 
     }); 
} 

답변

1

이미지 업로드 기능을 빌드하려면 프론트 엔드와 백엔드 모두에 기능을 추가해야합니다.

ExpressServer의 anglejs 및 일종의 업로드 처리기 패키지에는 사용자 정의 이미지 업로드 지시문 또는 구성 요소가 있어야합니다.

이러한 모든 사항을 염두에두고 Google은 반드시 최고의 패키지로 안내합니다.

하나 개의 코드 샘플은 여기에서 찾을 수 있습니다 : https://gist.github.com/keithics/bf0e13feaee5631fa936b7b203029cd4

기타 : https://github.com/nervgh/angular-file-upload

같은 사용할 라이브러리의 큰 숫자가 있습니다.