【问题标题】:Getting error while adding record into mongodb using mongoose and Node.js使用 mongoose 和 Node.js 将记录添加到 mongodb 时出错
【发布时间】:2020-09-30 18:10:19
【问题描述】:

我在向 mongodb 添加一些记录时遇到以下错误。

错误:

User.create 不是函数 /--/ "TypeError: User.create is not a 函数\n 在 module.exports.createUsers

这里我从邮递员那里发送一些数据,我的目标是将它们添加到 mongodb 数据库中。我先解释一下我的 mongo 连接文件。

mongo.js

const mongoose = require('mongoose').Mongoose;
const config = require('../config/settings');
const { MONGO_DB } = require('../config/settings');

const mongooseInstance = new mongoose();
const url = `mongodb://${config.MONGO_USER}:${config.MONGO_PWD}@${config.MONGO_URL}/${MONGO_DB}`;
const options = {
    useNewUrlParser: true,
    useCreateIndex: true,
    connectTimeoutMS: 5000000,
    poolSize: 10000,
    useUnifiedTopology: true
};

/*
 1- Connect to mongo server
*/

mongooseInstance.connect(url, options, (err) => {
    if(!err) {
        console.log('Mongodb connection successed');
    } else {
        console.log('Error in DB connection:' + JSON.stringify(err, undefined, true));
    }
})

module.exports = mongooseInstance;

上面的文件用来连接我的 mongodb。我在下面解释我的代码。

user.js

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

const User = new Schema({
    name: {type: String},
    mobile: { type: String},
    email: { type: String},
    city: { type: String}
}, {
    timestamps: {
        CreatedAt: 'CreatedAt',
        UpdatedAt: 'UpdatedAt'
    },
    collection : 'user'
});

module.exports = User;

以上文件是我的模型文件。我的控制器文件如下所示。

user-controller.js

const User = require('../models/user');

/*
 1- Add user.
*/

module.exports.createUsers = function (req, res,next) {

  const data = req.body;
  user = User.create(data);

  if(!user) {
    return res.status(400).json({ success: false, res: []}).end('');
  } else {
    return res.status(200).json({ success: true, res: user}).end('');
  }
}

我在这里尝试创建记录,但遇到了上述问题。我需要将记录添加到用户集合中。请帮我解决这个问题。

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    您需要先创建模式的模型。 只需使用以下命令创建它并导出变量:

    const userModel = mongoose.model('user', User);
    
    module.exports = userModel;
    
    

    【讨论】:

      【解决方案2】:

      user.js 中更改...

      module.exports = User;

      到...

      module.exports = mongoose.model("User", User)

      【讨论】:

        【解决方案3】:

        在您的user.js 文件中,您需要将module.exports = User 更新为module.exports = mongoose.model("User", User)。因为在 Mongoose 中,模型是通过将 Schema 实例传递给 mongoose.model 来定义的。

        【讨论】:

          【解决方案4】:

          尝试将模态的导出语句修改为

          const User = module.exports = mongoose.model('User', User);
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-02-27
            • 2019-06-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-09-27
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多