attributes: {
username: {
type: 'email', // validated by the ORM
required: true
},
password: {
type: 'string',
required: true
},
profile: {
firstname: 'string',
lastname: 'string',
photo: 'string',
birthdate: 'date',
zipcode: 'integer'
},
followers: 'array',
followees: 'array',
blocked: 'array'
}
我目前注册用户,然后在注册后更新个人资料信息。如何将配置文件数据添加到此模型?
我在别处读过push方法应该有效,但事实并非如此。我收到此错误:TypeError:Object [object Object]没有方法'push'
Users.findOne(req.session.user.id).done(function(error, user) {
user.profile.push({
firstname : first,
lastname : last,
zipcode: zip
})
user.save(function(error) {
console.log(error)
});
});
答案 0 :(得分:4)
@Zolmeister是正确的。 Sails仅支持以下模型属性类型
string, text, integer, float, date, time, datetime, boolean, binary, array, json
他们也不支持关联(在这种情况下可能会有用)
你可以通过绕过风帆并使用mongo的原生方法来解决这个问题:
Model.native(function(err, collection){
// Handle Errors
collection.find({'query': 'here'}).done(function(error, docs) {
// Handle Errors
// Do mongo-y things to your docs here
});
});
请记住,他们的垫片是有原因的。绕过它们将删除一些在幕后处理的功能(将id查询转换为ObjectIds,通过套接字发送pubsub消息等)。
答案 1 :(得分:2)
目前Sails不支持嵌套模型定义(据我所知)。您可以尝试使用'json'
类型。
在那之后你只需要:
user.profile = {
firstname : first,
lastname : last,
zipcode: zip
})
user.save(function(error) {
console.log(error)
});
答案 2 :(得分:1)
回复太迟了,但对于其他人(作为参考),他们可以这样做:
Users.findOne(req.session.user.id).done(function(error, user) {
profile = {
firstname : first,
lastname : last,
zipcode: zip
};
User.update({ id: req.session.user.id }, { profile: profile},
function(err, resUser) {
});
});