4
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'
}

現在、ユーザーを登録し、登録後にプロフィール情報を更新しています。このモデルにプロファイル データを追加するにはどうすればよいですか?

プッシュメソッドが機能するはずだと他の場所で読みましたが、機能しません。次のエラーが表示されます: TypeError: Object [object Object] has no method '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)
            });

        });
4

3 に答える 3

4

@ゾルマイスターは正しいです。Sails は、次のモデル属性タイプのみをサポートします

string, text, integer, float, date, time, datetime, boolean, binary, array, json

また、関連付けもサポートしていません (そうでなければ、この場合に役立ちます)。

GitHub の問題 #124

セイルをバイパスし、次のような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 クエリを ObjectId に変換する、ソケットを介して pubsub メッセージを送信するなど)。

于 2013-11-06T22:29:20.243 に答える
2

現在、Sails はネストされたモデル定義をサポートしていません (私の知る限り)。'json'タイプを使用してみることができます。その後、次のようになります。

user.profile = {
  firstname : first,
  lastname : last,
  zipcode: zip
})

user.save(function(error) {
  console.log(error)
});
于 2013-11-05T03:13:09.693 に答える
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) {
  });           
});
于 2014-04-22T08:49:44.290 に答える