我正在使用 Node.js API 应用程序来处理 BigchainDB 资产。
问题 1:检索模型的所有资产
问题 2:附加(“更新”)现有资产
系统:Node.js v8.11.2,npm v5.6.0,节点模块“express”v4.16.3,节点模块“babel-register”v6.26.0,节点模块bigchaindb-orm v.2.0.0
创建资产/检索单个资产
我在我的 BigchainDB 测试帐户 ( https://test.bigchaindb.com/ )中设置了一个应用程序。创建资产,使用 BigchainDB ORM Javascript 驱动没有问题:
exports.create_an_entry = function(req, res) {
bdbOrm.models.myModel
.create({
keypair: aliceKeypair,
data: {
city: req.body.city,
Created_data: new Date().toString(),
}
})
.then(asset => {
res.json(asset)
});
}
检索特定资产的信息也没有问题:
exports.read_an_entry = function(req, res) {
bdbOrm.models.myModel
.retrieve(req.params.assetId)
.then(assets => {
res.json(assets)
})
}
问题1:
使用模型名称“myModel”并检索所有资产会导致错误消息
{ 消息:'HTTP 错误:请求的页面不可访问',状态:'429 Too Many Requests',requestURI:' https://test.bigchaindb.com/api/v1/transactions?asset_id= ' }
exports.list_all_data = function(req, res) {
bdbOrm.models.myModel
.retrieve()
.then(assets => {
res.json(assets)
})
}
首先,检索到的资产比我创建的要多得多。其次,当我浏览 requestURI 时,有些资产的数据我从未创建过(例如,“name”:“Robin”、“email”:“test@test.no”)当我将模型名称更改为“testung”时我只收到我在这个模型名称下创建的资产。
模型名称是否必须是唯一的,甚至跨应用程序?
问题2:
在“追加”操作示例中,在同一步骤中创建了一个资产,然后将新数据追加到此。按照示例,我在“transactionHistory”中得到一个具有唯一 ID 和两个操作的资产作为输出。一个使用初始数据的 CREATE 操作和一个使用新数据的 TRANSFER 操作。
但我想要的是将更改/新数据附加到已创建的资产中。例如,创建了一项资产,其中一辆汽车的价格为 10.000 美元。一段时间后,车主决定,这辆车的价格应该是 9.000 美元。以下代码将不起作用:
exports.update_an_entry = function(req, res) {
bdbOrm.models.myModel
.retrieve(req.params.assetId)
.then(asset => {
return asset.append({
toPublicKey: aliceKeypair.publicKey,
keypair: aliceKeypair,
data: {
price: req.params.price,
}
})
})
.then(updatedAsset => {
res.json(updatedAsset)
})
}
我做错了什么还是我从根本上理解 BigchainDB 的概念是错误的?
顺便提一句。CRAB 教程不起作用,它以“400 BAD REQUEST”状态响应:https ://tutorials.bigchaindb.com/crab/