在强循环环回模型中自动递增属性值
Auto increment a property value in Strongloop loopback model
是否有一种内置的方法来自动递增模型的属性值是强循环环回?这个模型有一个名为 orderNumber 的属性,我希望它从 1 开始,每次创建新模型时递增 1。此模型持久保存到 mongo DB。如果Strongloop环回没有内置的方式,那么使用javaScript,Node和mongoDB的最佳实践是什么?
谢谢
好的
,这个解决方案有效,但我绕过了环回和"mongoDB连接器"。这就是我正在做的事情。
给定一个名为 Sequence 的模型,如下所示:
{
"_id": {
"$oid": "54ab3ec0cc074e24144f26d7"
},
"collection": "SpecialOrder",
"value": 113
}
我正在这样做:
mongoConnector = app.dataSources.MyMongoDBConnectorName.connector;
mongoConnector.collection("Sequence").findAndModify({collection: 'SpecialOrder'}, [['_id','asc']], {$inc: { value: 1 }}, {new: true}, function(err, sequence) {
if(err) {
console.log(err.message);
} else {
// Do what I need to do with new incremented value sequence.value
}
});
似乎应该有一个内置的 LoopbackJS 方法来做到这一点。为了增加一个值,要经历很多事情。
谢谢
沃伦·贝尔
有同样的问题,但使用 Postgres。修复了仅在数据库中手动更改列"id"的问题(将类型设置为 SERIAL,这意味着在 Postgres 中自动递增)。我认为问题可以在任何数据库上以这种方式解决。
我想
分享我的方法,它类似于作者的答案,但使用了 Loopback 的方法。这是我创建的Sequence
模型:
{
"name": "sequence",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"name": {
"type": "string",
"required": true
},
"value": {
"type": "number",
"required": true
}
},
"validations": [],
"relations": {},
"acls": [],
"methods": []
}
您可以在此模型中存储任意数量的序列。然后,我使用此脚本创建一个我需要的序列(在本例中为order
序列):
var app = require('./server/server');
var Sequence = app.models.Sequence;
Sequence.findOrCreate({
where: {
name: 'order'
}
}, {
name: 'order',
value: 0
}, function (err) {
if (err) {
console.log(err);
}
process.exit();
});
现在,每次我需要订单号来创建订单时,首先我通过递增value
来更新模型中Sequence
order
记录,然后使用它:
var Sequence = Order.app.models.Sequence;
Sequence.findOne({
where: {
name: 'order'
}
})
.then(function (orderNumber) {
orderNumber.value++;
return orderNumber.save();
})
.then(function (orderNumber) {
Order.upsert({
orderNumber: orderNumber.value,
...
});
});
干杯!
相关文章:
- Javascript:循环属性内部的条件递增或递减
- 在循环中包含特定属性
- 借助for循环和数组在对象中添加属性
- 不可枚举的属性出现在 for..在 Chrome 中循环
- 我们可以设置属性'id'到不同的'按钮'通过使用javascript或jquery的循环
- 如何在循环中设置onclick属性
- 按数据属性循环元素并替换值
- 使用循环增加css属性值
- 循环浏览JavaScript对象并记录其属性
- ..的Javascript..循环中的对象没有在最后一个属性上运行
- 循环访问 JS 数组 + 数组属性
- 如何使用 jQuery 在循环中获取属性的值
- 为for循环中的对象添加新属性
- 在'用于'如果javascript中不存在对象属性,则循环
- Waypoint的循环,退出循环后属性未定义
- 如何循环对象中的javascript对象并查找属性
- 使用循环更新 JSON 属性值
- 未捕获的类型错误: 无法读取未定义的属性“循环”
- 使用点符号和括号显示..内部的属性..循环中
- 对象的正确属性循环