我在尝试找出最佳方法时遇到了一些问题:
我有一个表单,我可以通过几个单选按钮以两种不同的方式为用户业务设置定价值:
成员,我有两个字段,“每个成员的金额”和“数量”。 按金额,我只有一个字段,“总金额”。
我必须将这些数据存储在DB中名为“price”的字段中。因此,如果我使用“按成员”选项提交表单,“价格”将是“每个成员金额”*“数量”的结果。如果我使用“按金额”选项提交表单,“价格”应为“总金额”字段值。
这里的问题是我不知道在模型上管理这个“条件”事物的最佳方法是哪种,所以也许你可以帮助我:D。
谢谢!
答案 0 :(得分:1)
如果您对模型使用mongoose,可以执行以下操作:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
mongoose.connect('mongodb://localhost/nodetest')
// Define schema
var formSchema = new Schema({
member: { type: Boolean, default: false },
qty: { type: Number, default: 0 },
amount: { type: Number, default: 0 },
price: { type: Number, default: 0 }
});
// Set up some getters and setters to calculate
formSchema.path('price').get(function(value) {
if (!this.member) {
return this.qty * this.amount;
}
return value;
});
formSchema.path('qty').set(function(value) {
if (!this.member) {
this.price = value * this.amount;
}
return value;
});
formSchema.path('amount').set(function(value) {
if (!this.member) {
this.price = this.qty * value;
)
return value;
});
// Define the model for the Schema
var Form = mongoose.model('Form', formSchema);
// Then use in your code
var form1 = new Form({ qty: 2, amount: 10 });
var form2 = new Form({ qty: 3, amount: 10, member: true, price: 25 });
console.log( form1 );
console.log( form2 );
这样会在模型中的price
字段中填入一个计算值,其中member
值为false,但如果为true
,则传入的值将为永远很荣幸。
我会将表单处理留给您,但这就是您可以在模型中保留逻辑的方法。