MONGODB Сколько моделей необходимо составить список sh? - PullRequest
0 голосов
/ 09 января 2020

Хорошо, я делаю список sh. Вы зарегистрироваться / войти, и вы можете добавить продукты в список. Я из MYSQL, поэтому, если бы я собирался сделать это в MYSQL, я бы сделал это.

table: USERNAME

id|username|password

table: wishlist

id|userid|wish

Тогда я бы вызвал список wi sh, используя идентификатор пользователя. Но mongoDB отличается тем, что использует json. Для модели mongoose я бы сделал это?

{
username
password
wishlist{
  productname
  bla bla
}
}

Как бы это настроить? Я делаю это в реаги-редуксе. Я уже что-то сделал с аутентификацией, где вы можете зарегистрироваться и добавить / удалить пожелания, но проблема в том, что все продукты от всех пользователей находятся на одной странице. В настоящее время у меня есть две отдельные модели для приложения.

1 Ответ

0 голосов
/ 09 января 2020

Вот пример того, как вы можете это сделать (имейте в виду, что вам не нужно определять поле id, так как mon go добавит его автоматически):

- mongodb. js - -

const mongoose = require('mongoose');

// Connect to database. (replace username, password and dbname).
mongoose.connect('mongodb://username:password@localhost:27017/dbname', {
    useNewUrlParser: true,
    useFindAndModify: false,
    useCreateIndex: true,
    autoIndex: false,
    useUnifiedTopology: true
  })
  .then(() => console.log('Connected to mongodb...'))
  .catch(err => console.error(err));

// Define user schema.
const UserSchema = new mongoose.Schema({
  username: {
    type: String,
    unique: true,
    index: true
  },
  password: String
});

// Define virtual field ( it "connects" two collections ( collections are like tables in MYSQL ) ).
UserSchema.virtual('wishlists', {
  ref: 'Wishlists',
  localField: '_id',
  foreignField: 'userid'
}, {
  toObject: {
    virtuals: true
  },
  toJSON: {
    virtuals: true
  }
});

// Define wishlist schema with field "userid" that references a user in "Users" collection.
const WishlistSchema = new mongoose.Schema({
  userid: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'Users'
  },
  wish: String
});

// Create collections called "Users" and "Wishlists" and export for use.
module.exports = {
  User: mongoose.model('Users', UserSchema),
  Wishlist: mongoose.model('Wishlists', WishlistSchema)
};

И затем вы можете использовать это на своем NodeJS сервере (вашем API), используя эти строки в качестве примеров:

const Models = require('./mongodb.js');
const User = Models.User;
const Wishlist = Models.Wishlist;

// Add new.
await new User({
  name: name,
  password: password
}).save();

// Find user by id.
await Users.findById('someid')
  .select();

// Find wishlists by userid and find user ( but keep out password! ).
await Wishlist.find({
  userid: 'someid'
}).select().populate('userid', 'username');

// Find user and all wishlists associated (using virtual fields from mongodb ).
await Users.findById('someid')
  .select().populate('wishlists');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...