【发布时间】:2018-12-06 05:55:09
【问题描述】:
我正在尝试实现一个自动增量 user_key 字段。在这个网站上,我遇到了两个与我的问题相关的问题,但我不清楚我应该做什么。 This is the main one
我有两个 Mongoose 模型,这是我的 ProductsCounterModel.js
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var Counter = new Schema({
_id: {type: String, required: true},
sequence_value: {type: Number, default: 0}
});
module.exports = mongoose.model('products_counter', Counter);
这是我尝试实现自动增量字段的 Mongoose 模型:
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var products_counter = require('./ProductsCounterModel.js');
var HistoricalProduct = new Schema({
product_key: { type: Number },
class: { type: String },
brand: { type: String },
model: { type: String },
description: { type: String }
});
HistoricalProduct.pre("save", function (next) {
console.log("first console log:",products_counter);
var doc = this;
products_counter.findOneAndUpdate(
{ "_id": "product_key" },
{ "$inc": { "sequence_value": 1 } },
function(error, products_counter) {
if(error) return next(error);
console.log("second console log",products_counter);
doc.product_key = products_counter.sequence_value;
next();
});
});
module.exports = mongoose.model('HistoricalProduct', HistoricalProduct);
按照上述 SO 答案中提供的步骤,我创建了 products_counter 集合并插入了一个文档。
问题是当我尝试插入新产品时出现此错误: "TypeError: 无法读取属性 'sequence_value' of null"
这是上述控制台日志的输出。
第一个控制台日志输出:
function model (doc, fields, skipId) {
if (!(this instanceof model))
return new model(doc, fields, skipId);
Model.call(this, doc, fields, skipId);
}
第二个控制台日志:
Null
你能看出我做错了什么吗?
【问题讨论】: