如何将类中的数据传递到Mongoose模型?

时间:2018-01-18 12:39:54

标签: javascript node.js

我将完成我为解决这个问题所做的工作。

  1. 有一个空板(here)。
  2. 您可以将骑士片放在棋盘上的任何位置。
  3. 您必须选择所需的位置。
  4. 游戏应返回最短距离的坐标以达到所需位置
  5. 例如。让我们把骑士放在A1上。我想去C5。将返回的坐标为: A1,B3,C5。
  6. 够用吗?

    • 此游戏必须使用 RESTFUL api NodeJS
    • 进行设计
    • 会有无界面。这纯粹是后端。
    • 我正在使用国际象棋库,因为我发现很难创建自己的棋盘(等等)。你可以在这里找到它:https://github.com/jhlywa/chess.js

    我做了什么来解决这个问题?

    我创建了一个控制器和一个棋盘类

    此代码不起作用,但显示模拟我想要实现的目标:

    (技术上我是业余爱好者)。

    我的控制器:

    app.post("/", (req, res) => {
      var board = new Board(chess = new Chess());
      // The post request creates a board
      board.clearBoard();
      // This clears the board of existing pieces
      board.placeFirstPosition(position);
      // This adds the knight to the board
      board.endPosition(position);
      // This method in the class here will handle the logic of moving the knight to the end position 
    // This logic needs to be passed into the model 
      var move = new Move({
      coordinate: (all_the_coordinates)
      })
      // This data (coordinates) will be passed into the model (via mongoose)
      move.save().then((doc) => {
        res.send(doc);
      }, (e) => {
        res.status(400).send(e);
      });
      // Finally these moves will be saved to the database and will be returned to the server
    });
    

    我的董事会成员:

    var Chess = require('../../node_modules/chess.js').Chess;
    
    function Board(chess = new Chess()) {
      this._chess = chess;
    }
    
    Board.prototype.clearBoard = function() {
      this._chess.clear();
    }
    
    Board.prototype.placeFirstPosition = function(position) {
      this._chess.put({ type: 'k', color: 'w' }, position)
    }
    
    Board.prototype.endPosition = function(position) {
     // logic calculating the sequence of coordinates
    }
    
    Board.prototype.showBoard = function() {
      return this._chess.ascii();
    }
    
    module.exports = {Board};
    
    • 我可能看起来有点啰嗦,我已经添加了这个可以显示棋盘的国际象棋库,但这是我唯一的选择,因为我不确定如何创建一个否则。

    我的问题:

    问题是:

    • 如何将我班级的方法坐标传递到移动模型?随后将保存在数据库中。
    • 如何在不对其进行硬编码的情况下将所需位置传递到POST中的函数?例如board.placeFirstPosition('a1');
    • 我稍后会处理逻辑,你会推荐什么路线?
    • 我不能使用邮递员在课堂上传递任何数据。
    • 是否需要数据库?我的想法是,否则我们怎么能知道到达那个位置所需的坐标?

    您的建议:

    • 如果你能想到一个更好的方法来实现这个最终结果,我很乐意听取你的意见。

1 个答案:

答案 0 :(得分:0)

假设我说得对,你的条件是:

  • 选择初始位置
  • 选择目的地位置
  • 发出HTTP请求并返回最快的路径。

阶段将是

创建一个匹配逻辑的算法

function findBestPath(initPosX, initPosY, destPosX, destPosY)

创建使用此功能的路线

const express = require('express');
const app = express();
const bodyParser = require('bodyParser');
app.use(bodyParser.json());

app.post('/getBestPath', (req, res) => {
    let initPosX = req.body.initPosX,
        initPosY = req.body.initPosY,
        destPosX = req.body.destPosX,
        destPosY = req.body.destPosY;

    res.send(findBestPath(initPosX, initPosY, destPosX, destPoxY));
};

app.listen(3000, () => console.log('Example app listening on port 3000!'))

完成后,您可以使用任何您能想到的界面(包括邮递员)的POST HTTP请求来调用此函数。