【问题标题】:Routes with dynamic objects?带有动态对象的路由?
【发布时间】:2020-12-15 18:59:18
【问题描述】:

我有一条路线来定义我的方格(一个大区域)的大小,在那个方格内我还有无数其他 1x1 比例的小方格 也就是说,如果我的计算匹配,如果我最大的正方形是 50x50,那么我里面有 2500 个小正方形,它们都是应该包含这些信息的对象:

{
  "data": {
    "x": 1,
    "y": 2,
    "painted": false
  },
  "error": false
}

那将是它们在我的大广场上的坐标以及它们是否被绘制 当我提交这样的请求时,我应该有这个返回信息:

GET / squares /: x /: y

其中 x 和 y 是我选择的小方块的坐标

问题是 如何为我最大的广场的整个区域创建这个广场路线? 我的意思是,我的方块路线中的对象数量将取决于我当时定义的较大方块的大小......我如何以“动态”的方式创建路线并根据其他东西的价值创建对象?

这是我的代码:

这是我的 bancoDeDados.js

function salvarTerritorie(territorie,area) { //Define o Id seguinte para o territorie ou utiliza um ID definido caso tenha
    if (!territorie.id) territorie.id = sequence.id
    territories[territorie.id] = territorie
    
    var MATRIZ2 = [];
    for (var i = 0; i < area; i++) {
        MATRIZ2[i] = [];
        for (var j = 0; j < area; j++) {
            MATRIZ2[i][j] = ''
        }
    }

    for (var L = 0; L < area; L++) {
        for (var C = 0; C < area; C++) {
            
            MATRIZ2[L][C] = C+1
        }
    }


    return territorie
}

这就是我的 servidor.js

function getSquares(x,y) {
    return territories.MATRIZ2[0][0]
}

//-

app.get('/squares/:x/:y',(req, res, next) => {
    // console.log(req.params.x, req.params.y)
    const {x, y} = req.params
    res.send(bancoDeDados.getSquares(x, y))
  })

编辑 现在我需要使用这条路线更新我的绘制属性:

PATCH /squares/:x/:y/paint

这应该会回报我:

{
  "data": {
    "x": 1,
    "y": 2,
    "painted": true
  },
  "error": false
}

到现在为止,我都是这样的

function patchSquare(x, y) {
    const stringQuadrado = JSON.stringify(territories.matriz)
    const dadosQuadrado = JSON.parse(stringQuadrado)

    dadosQuadrado[x][y].data.painted = true
    return dadosQuadrado[x][y]
}

它正确地返回了我 但它没有更新,因为在我的路线中

GET /squares/:x/:y

继续画我:假 我需要 patchSquare 来实际更新,这样即使这个 get 路由也可以得到更新的属性

【问题讨论】:

  • 您正在与 express 合作?
  • cape_bsas 是的,我是
  • 那么下面的答案应该适合你

标签: node.js routes nodes nested-routes


【解决方案1】:

如果您使用的是express(这只是一个假设),那么:

app.get('/squares/:x/:y', function (req, res) {
  // console.log(req.params.x, req.params.y)
  const {x, y} = req.params
  res.send(yourBigSquare[x][y])
})

【讨论】:

  • 我认为您的代码不起作用,因为territories.MATRIZ2 不存在(=== 未定义),对吗?
  • 你需要在territories里面有很多territorie
  • 是的,实际上我正在尝试这样做challenge我现在正在做第二步
  • 你在应聘这份工作吗?
  • 其实不是我的朋友,但他无法完成我现在正在研究节点的挑战(我是新手)所以我认为这将是一个很好的个人挑战(因为它会意味着我将能够完成我可以参与的未来流程)
猜你喜欢
  • 2020-09-08
  • 2018-09-18
  • 1970-01-01
  • 2017-02-02
  • 2019-08-28
  • 2017-10-28
  • 2012-12-16
  • 1970-01-01
  • 2022-11-05
相关资源
最近更新 更多