【问题标题】:node.js request post retrieve last id from db.jsonnode.js 请求发布从 db.json 检索最后一个 id
【发布时间】:2017-02-24 07:38:57
【问题描述】:

在 db.json 中发布一条新记录(包含多个数据的事务)后,我想在继续之前获取新记录的 id。怎么做 ?我被卡住了

我的 db.json 中有一个自动生成 id 的“表格”位置

我的要求是

request({
    url: url + '/api/positions,
    method: 'POST',
    form: transaction
}, ????);

我想在我的回调中检索 position.id(因为我必须在另一部分代码中使用它)。

非常感谢

奥利维尔

【问题讨论】:

    标签: node.js request json-server


    【解决方案1】:

    确保您的 API 正在返回位置 id,我假设您使用的是 express,所以在 /api/positions 中有响应 res.send({position...});

    编辑,所以你问的是路由?这是一个很棒的指南:https://expressjs.com/en/guide/routing.html 但我会给你一个例子来说明我的意思。

    app.post('/api/positions', function(req, res) { 
      //your logic goes here, so you are sending a 'transaction' object 
      // npm install and use body parser so you can retrieve attributes 
      // from the body of the post
      res.send({position: x}) 
    })
    

    【讨论】:

    • 你能不能给我一个例子(这是我第一个使用 node.js 的开发者,表达和请求),因为我只想得到最后一条记录
    • 对不起,我不明白,我迷路了
    • 可能我不太清楚,太初级了!!!我的表中有 "positions" { "productCode": "FUT1", "id": 1 }, { "productCode": "FUT2", "id": 2 },当我使用请求 POST + FORM 发布交易时,我知道我会有 { "productCode": "FUT3", "id": 3 } 的位置。我想用 position.id = 3 更新我的其他对象事务,我需要在回调函数中使用这个结果来修改 transaction.positionId = 3 的事务
    • 你能告诉我你的代码吗?你的路线代码准确吗?
    • var request = require('request'); var util = require('util'); var port = process.env.PORT || 3000; var url = '127.0.0.1:' + 端口; var urlPositions = url + '/api/positions'; var urlTransactions = url + '/api/transactions';
    【解决方案2】:

    也许是这样的。

    ...
    var router = jsonServer.router('db.json');
    ...
    
    // 'router.db.get' will fetch any first level attribute from your db.json
    var positions = router.db.get('positions').value();
    var lastPosition = positions[positions.length-1];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-13
      • 2020-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多