从另一个mongoose.Schema调用mongoose.Schema中的静态变量

时间:2019-02-21 17:50:47

标签: javascript node.js mongoose ecmascript-6 promise

我使用猫鼬模式,我有两个js文件;

first.js:

 const mongoose = require('mongoose')

    var FirstSchema= new mongoose.Schema({

        F1: {
            type: Boolean,
            default: null
        },
        F2: {
            type: Boolean,
            default: null
        }
    })


    FirstSchema.statics.add_to = function (_param) {
           //DO SOMETHING
    }

    var First = mongoose.model('First', FirstSchema )

    module.exports = {
        First
    }

socound.js:

 const mongoose = require('mongoose')
 var { First } = require('../func/first.js')

 var SocoundSchema = new mongoose.Schema({

    S1: {
        type: Boolean,
        default: null
    },
    S2: {
        type: Boolean,
        default: null
    }
})


 SocoundSchema.statics.add_other = function (_param) {

        return new Promise((resolve, reject) => {

            return First.add_to(_param).then((Result) => {
                return resolve(Result);
            }, (err) => {
                return reject(err);
            })

         })
}

var socound = mongoose.model('socound', SocoundSchema )

module.exports = {
    socound 
}

当我呼叫First.add_to时,它不起作用。

我测试了不同的代码和方法,但失败了...

如何在另一个mongooseSchema中的mongooseSchema中使用静态?有解决方案吗?

1 个答案:

答案 0 :(得分:0)

在socound.js中,您的.add_other函数出现问题(缺少括号):

Ph

并且您在调用First.addd_to()时使用.then,所以它应该是一个Promise,我只是在代码中添加了异步操作

First.js:

SocoundSchema.statics.add_other = function (_param) {

    return new Promise((resolve, reject) => {

        return First.add_to(_param)
        .then((Result) => {
            return resolve(Result);
        }, (err) => {
            return reject(err);
        })

     })
}