Я использую MongoDB с Mongoose, мне нужно сохранить данные пользователя для пользователей коллекции, которая содержит имя пользователя, пароль и данные компании данных, * Данные компании будут иметь Название компании, адрес и URL веб-сайта Теперь я создал другую схему для компании и пользователей
Мне нужно хранить данные пользователя вместе с идентификатором компании после установки в коллекцию компании, например
{
username: "Lorem Ipsum",
password: "Dolar Sit",
company: "5c73afcf9a3bde1a40da5184"
}
примерно так (Примечание: эта случайная строка является идентификатором данных компании), но я отправлю все в 1 объекте, как показано ниже
{
username: "Lorem Ipsum",
password: "Dolar Sit",
company: {
company_name: "Blah Blah",
company_address: "Blah Blah Blah",
company_website: "BlahBlah.com",
}
}
Моя пользовательская схема (user.js):
const mongoose = require ('mongoose');
const Company = require('./company');
Schema = mongoose.Schema
// User Schema
const userSchema = mongoose.Schema({
username:{
type: String,
required: true
},
password:{
type: String,
required: true
},
company:{
type: [{ type: Schema.Types.ObjectId, ref: 'Company' }],
required: true
},
created_on:{
type: Date,
default: Date.now
},
updated_on:{
type: Date,
default: Date.now
}
});
const User = module.exports = mongoose.model('Users', userSchema);
// Add User
module.exports.addUser = (user, callback) => {
User.create(user, callback);
}
И схема компании есть (компания.js):
const mongoose = require('mongoose');
// Book Schema
const companySchema = mongoose.Schema({
company_name:{
type: String
},
target_address:{
type: String
},
target_website:{
type: String
},
created_on:{
type: Date,
default: Date.now
},
updated_on:{
type: Date,
default: Date.now
}
});
const Company = module.exports = mongoose.model('Company', companySchema);
// Add Company
module.exports.addCompany = (comp, callback) => {
Company.create(comp, callback);
}
Теперь у меня вопрос: если я запускаю функцию Users.addUser
и передаю ей вышеуказанный json, она должна сохранять / создавать пользователя вместе с компанией.и идентификатор компании должен быть сохранен в собственности компании в коллекции пользователей.если я получу пользователей, то он должен вернуть данные пользователя с данными компании, извлеченными с использованием этого идентификатора, сохраненного в базе данных
Как это сделать?
Если я запустил вышеуказанные файлы и попытался вставить данныек нему, он покажет ниже ошибка
'Cast to Array failed for value "{ company_name: \'Moshi Moshi\', company_address: \'Bengaluru\' }" at path "company"',
name: 'CastError',
stringValue:
'"{ company_name: \'Moshi Moshi\', company_address: \'Bengaluru\' }"',
kind: 'Array',
value: [Object],
path: 'company',
reason: [MongooseError] } },
_message: 'Users validation failed',
name: 'ValidationError' }
[nodemon] restarting due to changes...
[nodemon] starting `node app.js`
E:\MoshiMoshi\Projects\Maaamamia\blackhole-rest\models\users.js:17
type: [{ type: ObjectId, ref: 'Company' }],
^
ReferenceError: ObjectId is not defined
как добиться этой функциональности?