Другим решением было бы поставить вызов: 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());
}
}
Я думаю, что это то, что вы ищете 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!!
Эй, Крис, посмотрите на 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». Мне это ни в коем случае не нужно. Надеюсь, это поможет !!!
На самом деле режим «Смешанный» (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
any
, поэтому на самом деле имеет схему. Лучший ответ OP - использовать strict: false
как , этот ответ говорит.
– steampowered
5 November 2015 в 12:43
Его больше невозможно.
Вы можете использовать Mongoose с коллекциями, у которых есть схема и драйвер узла или другой модуль mongo для этих схемных.
https: //groups.google.com/forum/#!msg/mongoose-orm/Bj9KTjI0NAQ/qSojYmoDwDYJ
thing.set(key, value)
, потому чтоthing.key=value
не работает с этим методом, т. Е. Он не сохраняется в базе данных иначе. – laggingreflex 18 March 2015 в 03:48MySQL
:) И я думаю, что предложение Джонатана / в соответствии с API-интерфейсом Mongoose API Примечание. Не устанавливайте значение false, если у вас есть веская причина . Абсолютно отлично с текущим контекстом (примерно толькоNO-SQL
) – Amol M Kulkarni 1 July 2016 в 09:53