ReactJS без создания схем в мангусте [дубликат]

Другим решением было бы поставить вызов: SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this) в конструктор MileageFeeCalculator следующим образом:

@Service
public class MileageFeeCalculator {

    @Autowired
    private MileageRateService rateService; // <--- will be autowired when constructor is called

    public MileageFeeCalculator() {
        SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this)
    }

    public float mileageCharge(final int miles) {
        return (miles * rateService.ratePerMile()); 
    }
}
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 в 14:43
поделиться
  • 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 в 14:43
поделиться
  • 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 в 14:43
поделиться
  • 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 в 14:43
поделиться
Другие вопросы по тегам:

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