类型错误:用户不是构造函数 - Mongoose Node.js Express-Validator

2023-12-27

我收到这个错误:

“用户不是构造函数类型错误”

我无法找出代码中有什么问题。任何建议表示赞赏!

路线/user.js

// Initialised user.js into users.js
// var User = require('../models/user');

if (errors) {
    // code here is working
} else {
    console.log('PASSED'); // logs "passed" msg successfully
    var newUser = new User({
        name: name,
        email: email,
        phone: phone,
        password: password2
    });

    User.createUser(newUser, function (err, user) {
        if (err) throw err;
        console.log(user);
    });

    req.flash('success_msg', 'You had been succesfully registered! Try signin.');
    res.redirect('/users/signin');
}

模型/user.js

var mongoose = require('mongoose');
var bcrypt = require('bcrypt');

var UserScheme = mongoose.Schema({
    name: {
        type: String,
        index: true
    },
    email: {
        type: String
    },
    phone: {
        type: String
    },
    password: {
        type: String
    }
});

var User = module.export = mongoose.model('User', UserScheme);

// encrypting password into hash
module.export.createUser = function(newUser, callback){
    bcrypt.genSalt(saltRounds, function(err, salt) {
        bcrypt.hash(newUser.password, salt, function(err, hash) {
            newUser.password = hash;
            newUser.save(callback);
        });
    });
};

如果需要更多代码,我可以更新帖子。


你需要改变module.export to module.exports

节点文档在这里 https://nodejs.org/api/modules.html#modules_exports_shortcut* 请注意,exports 是指向 module.exports 的快捷方式。 module.exports 是需要模块时返回的默认对象。在您的示例中,您创建了一个名为“导出”的新模块属性。这是一篇博客文章 https://blog.tableflip.io/the-difference-between-module-exports-and-exports/描述了exports和module.exports的关系。

考虑以下示例:

stack: cat ./49275169.js
console.log('export', module.export)
console.log('exports', module.exports)

stack: node ./49275169.js 
export undefined
exports {}

stack: 

这是一个猫鼬的例子:

stack: cat module.js 

const mongoose = require('mongoose')
const Schema = mongoose.Schema

const schema = new Schema({ name: String })
const User = module.exports = mongoose.model('Users', schema)

module.exports.createUser = function (newUser, callback) {
  console.log(new User({ name: 'Rohit' }))
}

stack: cat ./49275169.js 

const mongoose = require('mongoose')
const User = require('./module')

mongoose.connect('mongodb://localhost/test')

const user = new User({
  name: 'Branford'
})

user.save((err, doc) => {
  if (err) { return console.error(err) }
  mongoose.connection.close()
  return console.log(doc)
})

User.createUser()

stack: node ./49275169.js 

{ name: 'Rohit', _id: 5aa9138819d660182938b128 }
{ name: 'Branford', _id: 5aa9138819d660182938b127, __v: 0 }
stack: 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

类型错误:用户不是构造函数 - Mongoose Node.js Express-Validator 的相关文章

  • MongoClient:尝试使用 Mongoose 时未连接错误

    作为课程的一部分 我正在学习 MongoDB 现在正在学习 Mongoose 我已经完全按照课程中的方式编写了代码 但是当尝试使用node app js 我收到以下错误 node app js Output node 25772 Unhan
  • ReferenceError:找不到变量:需要

    我在加载时遇到问题node modules到我的网页之一 我已经安装了 npm node js 并且我想使用require 函数在我的网站上初始化 Firebase 我不知道为什么 但它抛出引用错误 ReferenceError 找不到变量
  • 如何将中间件绑定到socket.io中的事件

    现在您可以将中间件绑定到io use middleware 但这仅在建立套接字连接时触发 有没有办法在将其传递给事件句柄之前拦截它 就像在expressjs中一样 换句话说 In 快递 js你可以做 app get middleware1
  • 将音频与视频流合并 Node.js

    我正在创建 YouTube 视频下载器并且正在使用ytdl core库 它无法下载带有音频的高质量视频 因为 youtube 将其放在另一个文件中 但我需要将其全部下载到一个文件中 我已经这样做了 app get download asyn
  • 何时不使用承诺[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在阅读了数十篇关于 es6 Promise 有多伟大以及为什么我们应该实现它们的文章之后 我有这样的感觉 ALL我的 不平凡的 JavaScri
  • 如何修复超出最大调用堆栈大小

    有一个 MERN Firebase 应用程序并收到此错误和一堆 atdeepExtend deepCopy ts 71 RangeError Maximum call stack size exceeded getApps as apps
  • 如何调试 Gulp 任务?

    如何调试我的中定义的 gulp 任务gulpfile js使用诸如 Google Chrome 调试器之类的调试器逐行单步执行任务的代码 对于 Node js 6 3 版本 您可以使用 inspect flag https nodejs o
  • 为什么此类方法中的“this”未定义?

    我试图搜索似乎整个互联网 但我仍然对我为微服务编写的 JS 类的问题感到烦恼 仍在学习中 因此 我尝试在实例化对象上调用类方法 根据我的知识和我的 我认为是错误的 单元测试 它应该可以工作 好吧 我将从我收到的错误开始 GET api us
  • 在 Google App Engine 上连接 Mongoose

    我已在 Google App Engine 上成功部署了自定义 Node js 应用程序 但是 我在启动应用程序时遇到问题 因为猫鼬在尝试连接时超时 令人沮丧的是 猫鼬在我的本地计算机上以完全相同的参数连接得很好 我的 MongoDb UR
  • 如何找到您在服务器中的加入位置

    寻找一种方法来查找您何时按位置加入服务器 例如 如果我是服务器的所有者 我将是 1 因为我先加入 然后如果我在所有者之后加入 我将是 2 如果我在 20 人加入后加入 我将是 21 依此类推 有谁知道如何在 Node Js 中解决这个问题
  • 使用 enctype="multipart/form-data" 时出现 CSRF 错误

    每当我将 enctype multipart form data 添加到我的 html 表单中时 我得到ForbiddenError invalid csrf token 如果我删除 enctype 它就可以工作 我发送的 csrf 代码如
  • 如何在 Nodejs - mongodb 搜索中对结果进行排序,但是,通过调用动态方法

    我正在 Nodejs 中开发一个 Web 应用程序 通过 mongo 本机连接器连接到 mongodb 在我的一个 js 文件中 我有一个通用方法来调用 find 或 findOne 操作以从 mongodb 集合中检索我需要的任何内容 如
  • 将nodejs Express静态请求重定向到https

    我需要将所有 http 请求重定向到 https 包括对静态文件的请求 My code app use express static dirname public app get function req res if req secure
  • 使用 Sequelize (NodeJS) 代替 * 指定特定字段

    好吧 我在 NodeJS 中有一个项目 我正在其中使用 Sequelize 来实现 MySQL ORM 这件事工作得非常好 但是我试图弄清楚是否有一种方法可以指定在查询的基础上返回哪些字段 或者是否有一种方法可以在某处执行 query 例如
  • 如何使用 Passport /Facebook 策略/验证 Supertest 请求?

    我使用 Passport js 进行身份验证 Facebook 策略 并使用 Mocha 和 Supertest 进行测试 如何使用 Supertest for Facebook 策略创建会话并发出经过身份验证的请求 这是用户未登录时的示例
  • 错误:grid.mongo.GridStore不是构造函数,使用mongoose、Grid-fs-stream和grid multer存储

    我收到以下提到的错误 基本配置如下 我已经将文件上传到服务器上 我想下载它们但出现这些错误 我向 api files delete fileId 调用了 POST 请求 它应该调用路由并将文件返回给浏览器 而不是使用网格相关模块获取错误 M
  • 为 Promise 编写循环的正确方法。

    如何正确构造循环以确保满足以下条件承诺电话和被束缚的记录器 log res 通过迭代同步运行 蓝鸟 db getUser email then function res logger log res this is a promise 我尝
  • MongooseError:操作 `orders.deleteMany()` 缓冲在 10000 毫秒后超时

    当我运行我的应用程序时npm run seeder然后我面临这个错误 我仔细检查了我的数据库连接 没问题 另外 我检查了我的 ordermodels 文件也没有问题 我用过MongoDB的compass没有任何问题 我不知道为什么显示buf
  • 添加元数据到快速路线

    有什么方法可以将元数据添加到 Express 的路线中吗 例如 app get some route function req res some meta data 我正在寻找一种针对我的节点应用程序的 AOP 方法 因此我想通过身份验证和
  • Firebase CLI 部署错误:“现在在 Firebase CLI 中禁用部署到 Node.js 10 以下的运行时。”

    我有一个使用 Cloud Functions for Firebase 的项目 在将 Firebase CLI 更新到版本 9 0 0 后 我收到一条错误消息 错误 函数目录中的 package json 有一个引擎字段 不受支持 有效的选

随机推荐