Как получить доступ к одной схеме модели в базе данных другой модели мангуста

У меня есть две схемы: одна - схема пользователя в файле user.js, а другая - схема продукта в файле product.js.

Моя пользовательская схема в файле user.js выглядит следующим образом:

var userSchema = new Schema({
    firstname: {
        type: String,
        required: true
    },
    lastname: {
        type: String,
        required: true
    },
    password: {
        type: String,
        required: true
    },
    mobileno: {
        type: Number,
        unique: true,
        required: true
    },
    facebookid: {
        type: String
    },
    userimage: {
        type: String
    }
});

и я переопределяю автоматически сгенерированный _id с помощью модуля mongoose-auto-increment, чтобы автоматически увеличивать идентификатор пользователя в пользовательской коллекции.

И схема моего продукта в файле product.js выглядит следующим образом:

var productSchema = new Schema({
    userId: {
        type: String,
        required: true
    },
    productName: {
        type: String,
        required: true
    },
    productId: {
        type: String,
        required: true
    },
    price: {
        type: Number,
        unique: true,
        required: true
    },
    prodcutImage: {
        type: String
    }
});

Когда пользователь будет добавлять новые продукты в коллекцию, он заполнит все поля, указанные в схеме продукта. Я хочу убедиться, что введенный идентификатор пользователя существует в коллекции пользователей или нет, когда новый продукт добавляется пользователем в коллекцию продуктов. Я попытался получить доступ к методу userSchema.find в productSchema перед сохранением

productSchema.pre('save', function (next) {
    userSchema.findOne({'_id': userId}, function(err, user)
    {
        console.log(user);
    });
}

Но возвращает ошибку. Может ли кто-нибудь помочь мне в этом вопросе.


person Rohit Luthra    schedule 28.11.2016    source источник
comment
в чем ошибка?   -  person sidgate    schedule 28.11.2016
comment
увидеть правильную ошибку и опубликовать .. что вы подразумеваете под я думаю.????   -  person vighanesh mandavkar    schedule 28.11.2016


Ответы (1)


Вы можете сделать так

app.get('/user/:id', function (req, res, next) {
      userSchema.findOne({'_id': userId}, function(err, user)
    {
        if(user){
           next()
               }else{
                    res.json("user id is not valid");
                    }
    });      
    }, function (req, res, next) {
      // code to add your product in product schema
    })

более лучший способ - использовать промежуточное ПО на уровне маршрутизатора экспресс

person Simran    schedule 28.11.2016