首页 > 解决方案 > Models.Address 不是 Node Js 中的构造函数

问题描述

基本上我正在尝试使用 userId 添加地址并将地址保存在不同的集合中,例如我有两个模型,即用户和地址,其中,在用户中我们生成用户数据,之后我们想使用添加、编辑或删除地址地址集合中的 userId。主要是两个模型不同,我想使用 UserId 将地址部分存储在地址集合中。

地址.js

"use strict";
var mongoose = require("mongoose");
var Schema = mongoose.Schema;

var AddressSchema = new Schema({
        userId: {
            type: mongoose.Types.ObjectId,
            ref: "User",
            required: true
        },
        type: {
            type: String,
            unique: true,
            trim: true,
            required: true
        },
        latitude: {
            type: Number,
            required: true
        },
        longitude: {
            type: Number,
            required: true  
        },
        address: {
            type: String,
            required: true
        },
        locality: {
            type: String,
            required: true
        },
        landmark: {
            type: String,
            required: true
        }
    },
    // system generated
    {
        timestamps: true
    });

module.exports = mongoose.model("Address", AddressSchema);

这是我的 AddressRoute addressRoute.js

router.post("/addAddress", validator.headers(Validations.token), validator.body(Validations.addAddress), Auth.commonUser, (req, res) => {
        const response = {
            success: false,
            message: "",
            data: {}
        };
        // send only the data that is required by the controller
        logger.info(req.body);
        Controllers.UserAddress.addAddress(req.admin, req.body)
            .then(data => {
                if (!data) {
                    console.log(data)
                    return UniversalFunction.sendError(res)
                } else {
                    const message = "Address added successfully";
                    return UniversalFunction.sendSuccess(res, data, message)
                }
            })
            .catch(error => {
                console.log(error)
                logger.error(error);
                return UniversalFunction.sendCatchError(res, error.message)
            });
    });

module.exports = router

地址控制器.js

"use strict";

require('dotenv').config()
const Service = require('../services')

let _userAddress = {}

_userAddress.addAddress = async (userData, payloadData) => {
    try {
        console.log(userData)
        console.log("PayLoadData:- ",payloadData)
        payloadData.adminId = userData.id
        await Service.AddressService.create(payloadData)
        return {}
    } catch (error) {
        console.log("error :-", error)
        throw error
    }
}
module.exports = _userAddress

地址服务.js

"use strict";

/*
 * Library for storing and editing data
 */

// Dependencies
const Models = require("../models");

// Container for module (to be exported)
const _service = {};

// Create and Save a new admin
_service.create = (objToSave) => {
    var newUser = new Models.Address(objToSave);
    return newUser.save().then(response => {
        return response.toObject();
    });
};
module.exports = _service

地址验证.js

"use strict";

require('dotenv').config()
const Joi = require('@hapi/joi');

const token = Joi.object({
    authorization: Joi.string()
});

const addAddress = Joi.object({
    userId : Joi.string().required(),
    type : Joi.string().required(),
    address : Joi.string().required(),
    locality : Joi.string().required(),
    landmark : Joi.string().required()
});
module.exports = {
    token,
    addAddress
}

标签: node.jsmongodbexpressmongoose

解决方案


推荐阅读