2017-11-30 21 views
0

나는 플레이어의 이름과 점수를 게시하는 점수 판 웹 앱을 제작 중입니다.플레이어 이름과 점수를 데이터베이스에 입력하는 방법

var players = [ 
    'Bob', 
    'Tom', 
    'Mark' 
]; 

나는 플레이어의 이름과 점수를 씨앗 싶습니다 : 나는 그것이과 같이 배열에서 문자열로 나열되어있는 경우 그러나 나는 단지 그들의 이름을 종자 수 있어요, 응용 프로그램이 실행되기 전에 데이터를 시드 싶습니다 과 같이 배열 내에서 객체를 사용하여 :

var players = [ 
    {"name": "Mary", "score": 9}, 
    {"name": "Barry", "score": 16}, 
    {"name": "Harry", "score": 12} 
]; 

아래 플레이어의 이름과 '0'대신 위의 객체 내부의 득점으로 점수를 올리기 내 기능입니다. 새로운 플레이어에게 '0'점수 만 받기를 원합니다.

seed.js

players.forEach(function (player, index) { 
    Player.find({ 'name': player}, 
    function(err, players) { 
    if (!err && !players.length) { 
     Player.create({ score: 0, name: player }); 
    } 
    }); 
}); 

This is the model that I created in MongoDB for the player: 

player.js 여기

'use strict'; 

var mongoose = require('mongoose'); 

var playerSchema = new mongoose.Schema({ 
    name: String, 
    score: Number 
}); 

var model = mongoose.model('Player', playerSchema); 

module.exports = model; 

있는 선수에 대한 내 HTML :

player.html

,369

Desired

어떤 도움을 :

여기 Current

이 보는 내 응용 프로그램을 할 방법의 사진입니다 : 여기

<div class="item" ng-repeat="player in players | orderBy: 'player.score' "> 
    <label ng-hide="editing" ng-click="editing=true">{{player.name}}</label> 
    <input ng-show="editing" ng-blur="editing = false" class="editing-label" type="text" ng-model="player.name" ng-change="player.edited = true"/> 
    <div class="actions"> 
    <button ng-model="player.score" min="0" ng-click="player.score = player.score - 1" type="number" >-</button> 
    <label ng-model="player.score" placeholder="0" class="editing-label">{{player.score}}</label> 
    <button ng-model="player.score" min="0" ng-click="player.score = player.score + 1" type="number">+</button> 
    <a href="" ng-click="savePlayers()">Save</a> 
    <a href="" class="delete" ng-click="deletePlayer(player, $index)">Delete</a> 
    </div> 
</div> 

내 앱이 현재의 모습의 사진입니다 대단히 감사하겠습니다!

+0

방금'Player.insertMany (플레이어을 할 수 콜백)'? 그게 내가 데이터베이스를 앱 시작에 뿌리기 때문이다. 내가 구문 분석하고 요소를 내 데이터베이스에 삽입하는 외부 JSON 파일이 있습니다. –

답변

0

시드 할 때 일반적으로 데이터베이스에 데이터를 미리 놓아두고 데이터베이스에 이미 플레이어가 없기를 원할 것입니다. 즉, 존재 여부에 대해 걱정할 필요가 없습니다. 이미 당신이 씨를 뿌릴 때. 당신이 할 수있는, 당신이 당신의 항목이 시드마다 떨어 뜨리지하려면

Player.remove({}, function(err) { 
    //this will remove all the players from your table 
    if(err) console.error(err); 
    else { 
    players.forEach(function (player) { 
     //player is an object with both the name and score 
     Player.create(player, function(err, createdPlayer) { 
     if(err) console.error(err); 
     else console.log('player was created!', createdPlayer); 
     }); 
    }); 
    } 
}) 

:이 경우

, 당신은 단순히 배열에서 각각의 플레이어를 만드는, 그래서처럼 seed.js을 쓸 수 있습니다 당신이 이미 가지고있는 코드를 사용하지만, 당신이 당신의 데이터베이스에 플레이어를 찾을 수없는 경우, 당신은 당신의 배열에서 플레이어 오브젝트를 사용하여 만들 수 있습니다

players.forEach(function (player) { 
    Player.find({name: player.name }, 
    function(err, players) { 
    if (!err && !players.length) { 
     Player.create(player, function(err) { 
     if(err) console.error(err); //always handle your errors, just in case! 
     }); 
    } 
    }); 
});