Ras*_*amm 19 javascript postgresql sequelize.js
我试图将一个属性添加到sequelize实例,然后再将其传递回客户端.
router.get('/cats/1', function (req, res) {
Cat.findOne({where: {id: 1}})
.then(function (cat) {
// cat exists and looks like {id: 1}
cat.name = "Lincoln";
// console.log of cat is {id: 1, name: Lincoln}
res.json(cat);
});
});
Run Code Online (Sandbox Code Playgroud)
客户端只看到{id: 1}而不是新添加的密钥.
Tom*_*ara 32
Sequelize Model类(你的猫是实例)有一个toJSON()方法,res.json可能会用来序列你的猫.该方法返回Model#get()(https://github.com/sequelize/sequelize/blob/95adb78a03c16ebdc1e62e80983d1d6a204eed80/lib/model.js#L3610-L3613)的结果,该结果仅使用模型上定义的属性.如果您希望能够在数据库中设置猫名称而不是商店名称,则可以在定义猫模型时使用虚拟列:
sequelize.define('Cat', {
// [other columns here...]
name: Sequelize.VIRTUAL
});
Run Code Online (Sandbox Code Playgroud)
或者,如果您不想向模型定义添加属性:
cat = cat.toJSON(); // actually returns a plain object, not a JSON string
cat.name = 'Macavity';
res.json(cat);
Run Code Online (Sandbox Code Playgroud)
Eri*_*ang 15
以下适用于续集v4。
...
const order = Order.findOne(criteria);
order.setDataValue('additionalProperty', 'some value');
...
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。为时已晚,但万一人们还在寻找答案。
对我有用的是使用setDataValue
router.get('/cats/1', function (req, res) {
Cat.findOne({where: {id: 1}})
.then(function (cat) {
cat.setDataValue("name", "Lincoln");
res.json(cat);
});
});
Run Code Online (Sandbox Code Playgroud)
功能规格
public setDataValue(key: string, value: any)
Update the underlying data value
Params:
Name Type Attribute Description
key string key to set in instance data store
value any new value for given key
Run Code Online (Sandbox Code Playgroud)
来源:https ://sequelize.org/master/class/lib/model.js~Model.html#instance-method-setDataValue
| 归档时间: |
|
| 查看次数: |
9941 次 |
| 最近记录: |