【发布时间】:2016-01-28 06:18:17
【问题描述】:
我想在我的一个集合上设置一个自动递增的 ID(_id 太长)。为此,我按照包括 Mongos 官方网站(如下)在内的许多帖子中的建议创建了一个“计数器”集合:
var mongoose = require('mongoose');
module.exports = mongoose.model('Counter', {
_id: String,
sequence_value: Number
});
然后我插入了一个带有 seq 值的计数器。下面是创建新项目时调用的函数。添加新项目的逻辑有效,获取计数器值的查询在console.log(data.sequence_value); 返回序列值的范围内有效。
但我无法通过执行以下操作将 sequence_value 应用于项目创建逻辑:
module.exports.newitem = function(req, res){
var nextId = Counter.findByIdAndUpdate(
{_id: 'productid'},
{ $inc: { incr: 1 } },
function (err, data) {
if(err){
console.log(err.stack || err.message)
} else{
console.log("successful")
}
console.log(data.sequence_value);
return data.sequence_value
});
var item = new Item();
item.itemId = nextId;
// Save the item that has been sent.
item.save();
// If adding the user is successful. Send back the user.
res.json(req.body);
};
当前脱节的逻辑版本如下:
module.exports.newitem = function(req, res){
Counter.findByIdAndUpdate(
{_id: 'productid'},
{ $inc: { incr: 1 } },
function (err, data) {
if(err){
console.log(err.stack || err.message)
} else{
console.log("successful")
}
console.log(data.sequence_value);
});
var item = new Item();
item.itemId = "2000";
// Save the item that has been sent.
item.save();
// If adding the user is successful. Send back the user.
res.json(req.body);
};
希望以上内容有意义。非常感谢任何帮助。
【问题讨论】:
标签: javascript node.js mongodb