Не удается вставить документы в пн go с помощью мангуста - PullRequest
0 голосов
/ 02 августа 2020

Когда я пытаюсь вставить документ, используя приведенный ниже код, он создает пустой объект вместо документа, содержащего правильные данные.

Данные правильно передаются в метод create. enter image description here

But after running it, an empty document gets inserted. No errors thrown.

введите описание изображения здесь

Вот код.

Определение схемы.

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

const User = new Schema({
    user_id: {
        type: String,
        unique: true
    },
    email: {
        type: String,
        unique: true,
        lowercase: true
    },
    password: String,
});

module.exports = { User }

Нач.

const configuration = require("./configuration");
var mongoose = require('mongoose');

// Model declaration
var { UserSchema, AdministratorSchema, TrailPointSchema } = require("./schemas")

const UserModel = mongoose.model('User', UserSchema);
const AdministratorModel = mongoose.model('Administrator', AdministratorSchema);
const TrailPointModel = mongoose.model('TrailPoint', TrailPointSchema);

async function connectToDbAsync() {
    configuration.logger.debug("attempting to connect with", configuration.databaseConnectionString);
    mongoose.set('useCreateIndex', true);
    await mongoose.connect(configuration.databaseConnectionString,
        {
            useNewUrlParser: true,
            useUnifiedTopology: true
        });
    configuration.logger.debug("connected");
}

module.exports = {
    connectToDbAsync, UserModel, AdministratorModel, TrailPointModel
}

Вставка.

require("../typedef");
const { logger } = require("../configuration");
const { UserModel, TrailPointModel } = require("../init");
const { v4: uuidv4 } = require('uuid');

/**
 * 
 * @param {CreateUserDTO} user_data 
 */
async function create_user(user_data) {
    try {
        /** Mapping the DTO->DO 
         * @type {User} 
         * */
        var userDO = {
            user_id: uuidv4(),
            email: user_data.email,
            password: user_data.password,
        }
        logger.debug("Mapping", user_data, userDO);
        logger.debug("Saving Object");
        var new_user = await UserModel.create(userDO);
        logger.debug("Saved ", new_user);
        return new_user;
    } catch (e) {
        logger.error("Error saving User", arguments, userDO, e);
        return false;
    }
}

индекс

var express = require("express");
var bodyParser = require("body-parser");
var { connectToDbAsync } = require("./init");
const Controllers = require("./controllers")

const app = express();
app.use(bodyParser.json());
app.use(express.static("app/public"));
connectToDbAsync().then(function () {
    Controllers.TrailController.register(app);
    Controllers.UserController.register(app);
    // app.get("*", function (req, res) {
    //     res.json("hello");
    // });
    app.listen(8080, () => console.log("App listening on port 8080!"));
});

1 Ответ

0 голосов
/ 02 августа 2020

Я экспортировал объект вместо определения схемы.

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

const User = new Schema({
    user_id: {
        type: String,
        unique: true
    },
    email: {
        type: String,
        unique: true,
        lowercase: true
    },
    password: String,
});

module.exports = { User }

Итак, в моем определении модели.

const UserModel = mongoose.model('User', UserSchema);

Фактически я отправлял объект типа

{
    User: Schema<any>
}

Когда для этого вызова требуется определение схемы.

При экспорте схемы только в мой файл ошибка исчезла

module.exports = User;

Я чувствую, что это должно вызвать ошибку или что-то.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...