MongoDB с Мангустом, бессмысленным? [Дубликат]

Вы должны заключить свой

  • в качестве компонента, поддерживающего маршрутизатор:
    import { Link, IndexLink } from 'react-router'
    
    class NavItem extends React.Component {
      render () {
        const { router } = this.context
        const { index, onlyActiveOnIndex, to, children, ...props } = this.props
    
        const isActive = router.isActive(to, onlyActiveOnIndex)
        const LinkComponent = index ? Link : IndexLink
    
        return (
          
  • {children}
  • ) } }

    Использование:

      Home A

    Я принял участие в модуле response-router-bootstrap , https://github.com/react-bootstrap/react-router-bootstrap/blob/master/src/LinkContainer.js . Я не тестировал его, хотя дайте мне знать, как это происходит.

  • 83
    задан Christopher Tarquini 20 March 2011 в 20:22
    поделиться

    4 ответа

    Я думаю, что это то, что вы ищете Mongoose Strict

    option: strict

    Строгая опция (включена по умолчанию), гарантирует, что значения, добавленные в наш экземпляр модели, которые не были указаны в нашей схеме, не сохраняются в db.

    Примечание. Не устанавливайте значение false, если у вас нет веских причин.

        var thingSchema = new Schema({..}, { strict: false });
        var Thing = mongoose.model('Thing', thingSchema);
        var thing = new Thing({ iAmNotInTheSchema: true });
        thing.save() // iAmNotInTheSchema is now saved to the db!!
    
    121
    ответ дан Leandros 20 August 2018 в 09:45
    поделиться
    • 1
      Ты спас свой день. Я также узнал, что это нельзя использовать с #markMotified ('& lt; columnName & gt;') – allenhwkim 29 November 2013 в 20:24
    • 2
      PS: Вы должны делать thing.set(key, value), потому что thing.key=value не работает с этим методом, т. Е. Он не сохраняется в базе данных иначе. – laggingreflex 18 March 2015 в 03:48
    • 3
      @ a20, я вижу вашу мысль, но это не предложение от меня. Я копирую / вставляю документы только в том случае, если ссылка опустилась. – Jonathan P. Diaz 13 October 2015 в 14:28
    • 4
      Если вы используете этот метод, вы столкнетесь с проблемами при получении документов. После выполнения поиска, а затем doc.someProp doc.someProp будет неопределенным, хотя на самом деле он присутствует на объекте (console.log подтверждает это), это потому, что mongoose определяет свои собственные геттеры, которые, похоже, работают только при определении эта поддержка по схеме – Melbourne2991 19 March 2016 в 04:43
    • 5
      @ a20: Я понимаю, что вы говорите о MySQL :) И я думаю, что предложение Джонатана / в соответствии с API-интерфейсом Mongoose API Примечание. Не устанавливайте значение false, если у вас есть веская причина . Абсолютно отлично с текущим контекстом (примерно только NO-SQL) – Amol M Kulkarni 1 July 2016 в 09:53

    Эй, Крис, посмотрите на Mongous . У меня была та же проблема с мангустом, поскольку мои схемы очень часто изменяются прямо сейчас в процессе разработки. Монгуйский позволил мне иметь простоту Мангуста, хотя я мог свободно определять и изменять свои «схемы». Я решил просто создать стандартные объекты JavaScript и сохранить их в базе данных, например

    function User(user){
      this.name = user.name
    , this.age = user.age
    }
    
    app.post('save/user', function(req,res,next){
      var u = new User(req.body)
      db('mydb.users').save(u)
      res.send(200)
      // that's it! You've saved a user
    });
    

    . Это намного проще, чем Mongoose, хотя я действительно считаю, что вы пропустили какой-то классный материал промежуточного уровня, например «pre». Мне это ни в коем случае не нужно. Надеюсь, это поможет !!!

    12
    ответ дан Hacknightly 20 August 2018 в 09:45
    поделиться
    • 1
      Вы знаете, как обращаться с ошибками в mongous случайно? Это немного отсутствует в документах. – Erik Aigner 25 February 2012 в 11:26
    • 2
      Я не вижу в этом реального ответа на вопрос, хотя @kwhitley имеет соответствующий ответ в отношении Mongoose. – janex 25 October 2013 в 18:37
    • 3
      Я должен был бы согласиться. Я не уверен, однако, что Schema.types.mixed был доступен во время OP, задающего этот вопрос – Hacknightly 25 October 2013 в 21:22
    • 4
      Здесь, я склонен согласиться с вами, однако ответ пришел через год после того, как я уже принял это. – Christopher Tarquini 9 April 2014 в 17:21

    На самом деле режим «Смешанный» (Schema.Types.Mixed) выглядит так, что в Mongoose ...

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

    Mixed

    «Что угодно» SchemaType, его гибкость возникает при компромисс с ним сложнее поддерживать. Смешанный доступен либо через Schema.Types.Mixed, либо путем передачи пустого литерала объекта. Следующие эквиваленты:

    var Any = new Schema({ any: {} });
    var Any = new Schema({ any: Schema.Types.Mixed });
    

    Поскольку это тип без схемы, вы можете изменить значение на все, что вам нравится, но Mongoose теряет способность автоматически обнаруживать и сохранять эти изменения. Чтобы «сказать» Mongoose, что значение смешанного типа изменилось, вызовите метод .markModified(path) документа, передающий путь к только что измененному типу Mixed.

    person.anything = { x: [3, 4, { y: "changed" }] };
    person.markModified('anything');
    person.save(); // anything will now get saved
    
    50
    ответ дан Jossef Harush 20 August 2018 в 09:45
    поделиться
    • 1
      Это все еще правильный способ работать без схемы с Mongo / Mongoose? – a20 13 October 2015 в 03:32
    • 2
      Но эта структура гнездится для всего объекта в поле any, поэтому на самом деле имеет схему. Лучший ответ OP - использовать strict: false как , этот ответ говорит. – steampowered 5 November 2015 в 12:43

    Его больше невозможно.

    Вы можете использовать Mongoose с коллекциями, у которых есть схема и драйвер узла или другой модуль mongo для этих схемных.

    https: //groups.google.com/forum/#!msg/mongoose-orm/Bj9KTjI0NAQ/qSojYmoDwDYJ

    -8
    ответ дан masylum 20 August 2018 в 09:45
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: