gpt4 book ai didi

javascript - 类型错误 : undefined is not a function in Node. js

转载 作者:行者123 更新时间:2023-12-03 09:33:12 24 4
gpt4 key购买 nike

在我的组模型中,我导出一个使用回调传递查询结果的函数。

在我的路由器文件中,在正确请求其他文件后,我正在调用此函数。

这是我的./models/groups.js:

var groupSchema = new mongoose.Schema({

[...]

module.exports.getAll = function(cb) {
groupSchema.find({}, function(err, groups) {
if (err) return cb(err)
cb(null, groups)
})
}

[...]

module.exports = mongoose.model('Group', groupSchema);

这是我的 ./routes/groups.js 文件。

var Group = require('../models/group')
router.route('/groups')

.get(function(req, res, next) {
Group.getAll( function(err, group){
if (err) res.send(err)
res.send(group)
})
})

[...]

这不起作用,因为每次我发出 get 请求时,都会收到 TypeError: undefined is not a function 错误。我知道我可以在我的路由器文件上进行查询,但我认为将路由和方法之间的内容分开会是更好的做法。

最佳答案

当您向 module.exports 分配新值时,您将覆盖定义 getAll 函数的对象。

你有两个选择:

  1. 使用 getAll 函数扩展模型,并像今天一样导出。
    这基本上看起来像:

    var model = mongoose.model('Group', groupSchema);
    model.getAll = function(cb) {
    ...
    };
    module.exports = model;

    但这不是很“干净”。

  2. 将模型与 getAll 函数一起导出到命名属性下。
    这基本上看起来像这样:

    module.exports.getAll = function(cb) {
    ...
    };
    module.exports.model = mongoose.model('Group', groupSchema);

    然后在您的 route ,您将:

    var Groups = require('../models/group');
    // Now you have Groups.getAll & Groups.model

    总体而言,这更加灵活,并且允许您导出您认为合适的其他类型/函数/值。

关于javascript - 类型错误 : undefined is not a function in Node. js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31426973/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com