我正试图在RethinkDB中做一个试图使自动增量保证的解决方法。这就是我所拥有的:
exports.addCar = function (req, res) {
var car= req.body;
delete car.id;
debug('Adding car: %j', car);
<-Code for Adding new cars->
r.table('cars').insert(car).run(self.connection, function(err, result) {
if(err) {
debug("[ERROR] addCar %s:%s\n%s", err.name, err.msg, err.message);
res.send({error: 'An error occurred when adding the new car (' + err.msg + ')'})
}
else {
if(result && result.inserted === 1) {
car.id = result.generated_keys[0];
res.send(car);
}
else {
debug("[ERROR] Failed to create new car record: %j (%j)", car, result);
res.send({error: 'An error occurred when adding the new car document'});
}
}
});
<-Code for AutoIncrement in another document->
r.table("autoincrement").get(1).update({
number: r.row("number").coerceTo("number").add(1).coerceTo("string")}).run(self.connection, function(err, result) {
if(err) {
debug("[ERROR] findById: %s:%s\n%s", err.name, err.msg, err.message);
}
else {
console.log("New record added");
}
})
};
正如您所看到的,每次保存汽车时,都会为&#34;数字&#34;添加+1。用于自动增量序列的另一个文档中的行。
如何从其他文档中获取结果以将字段更新到汽车行?
答案 0 :(得分:0)
首先,在您的实现中,您需要3次操作。
更好:
1)更新autoincrement
表并返回更改(检查update doc):
r.table("autoincrement").get(1).update({
number: r.row("number").coerceTo("number").add(1).coerceTo("string")}, {
returnChanges: true
}).run(self.connection, function(err, result) {
if(err) {
debug("[ERROR] findById: %s:%s\n%s", err.name, err.msg, err.message);
}
else {
console.log("New record added");
}
})
在result.changes[0].new_val.number
中,您的值会增加。
2)用这个数字(或其他)更新你的car
对象,并将结果插入cars
表。