【问题标题】:Mongoose require model in model猫鼬需要模型中的模型
【发布时间】:2015-09-16 09:16:07
【问题描述】:

我想在模型中使用来自另一个模型的静态方法。但是当我需要其他模型并调用函数时:

TypeError: Cannot read property 'isCalculated' of undefined

所以..不可能在另一个模型中要求一个模型吗? :(

模型在同一个文件夹中,所以我调用

var Confirmation = require("./confirmation").Confirmation;

并确认导出:

module.exports = {
Confirmation: mongoose.model('Confirmation', confirmationSchema)
};

谢谢:)

更新:代码:invoice.js

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var autoIncrement = require('mongoose-auto-increment');
var Moment = 'Moment';
var moment = require('moment');
var Currency = mongoose.Types.Currency;
var Confirmation = require("./confirmation.js");
autoIncrement.initialize(mongoose.connection);

var invoiceSchema = new Schema({...}); //invoiceSchema

invoiceSchema.statics.insert= function(invoice, cb) {
....
Confirmation.isCalculated(..) //error here
....
}

module.exports = mongoose.model("Invoice", invoiceSchema);

以及代码:confirmation.js

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var Invoice = require("./invoice.js");

var confirmationSchema = new Schema({...});

confirmationSchema.statics.isCalculated = function(pid, aid, cb) {...};

module.exports = mongoose.model('Confirmation', confirmationSchema)

【问题讨论】:

  • 你能说明如何/在哪里声明isCalculated 方法吗?
  • 在确认中:confirmationSchema.statics.isCalculated = function(pid, aid, cb) {..})
  • 你能给出确切的代码吗?例如,如果您在创建模型之后添加该静态方法,则会收到这样的错误。
  • 我目前已经看到,我需要在发票中确认(另一个模块)..也许这是问题所在?
  • 不一定,但如果没有更多代码就很难分辨。

标签: express mongoose static-methods require


【解决方案1】:

我的猜测是,由于您的循环导入(confirmation.js 需要 invoice.js 需要 confirmation.js...),您的 Confirmation 模型在您的 invoice.js 中没有正确实现。

我认为您应该完全删除循环导入并使用 mongoose.model() 动态获取对“另一个”模型的引用,如下所示:

invoiceSchema.statics.insert = function(invoice, cb) {
  ....
  mongoose.model('Confirmation').isCalculated(..)
  ....
}

【讨论】:

    猜你喜欢
    • 2013-01-16
    • 2018-10-02
    • 2019-07-17
    • 1970-01-01
    • 2017-10-05
    • 2018-03-04
    • 2018-07-15
    • 2014-12-09
    • 2018-12-23
    相关资源
    最近更新 更多