2

次のような単純な小さなユーザー登録フォームがあります。

// POST Register new user
exports.new = function(req, res) {
    var db = require('mongojs').connect('localhost/busapp', ['users']);
    db.users.ensureIndex({email:1}, {unique: true})

    function User(email, username, password, dateCreated) {
        this.email = email;
        this.username  = username;
        this.password = password;
        this.dateCreated = new Date();
        this.admin = 0;
        this.activated = 0
    }

    if (req.body.user.password !== req.body.user.passwordc) {
        res.send('Passwords do not match');
    } else {

        var user = new User(req.body.user.email, req.body.user.username, 
                            req.body.user.password);

        // TODO: Remove this after we clarify that it works.

        console.log(user.email + " " + user.username + " " +  
                    user.password);


        // Save user to database

        db.users.save(user, function(err, savedUser) {
            if (err) {
                res.send(err);
            } else {
            console.log("User " + savedUser.email + " saved");
            }
        });
    }
}

しかし、送信された情報の検証に問題があります。たとえば、一意の値は空です。そのため、投稿リクエストをデータベースに送信して jQuery 検証機能をバイパスすることはできません。ドキュメントを読みましたが、正しく理解できないようです。ensureIndex を設定しようとしましたが、うまくいかないようです。データベース側で入力を検証する方法についての情報は、とてもありがたいです!

4

2 に答える 2

0

password != "" のようなことをできないのはなぜですか。一意の値については、find または findOne 関数を使用して、その名前がデータベースに存在するかどうかを確認する必要があります。

私はマングースをインストールすることを強くお勧めします。スキーマを作成できるため、非常に便利です。したがって、MVC に精通している場合、モデルには、ユーザーのスキーマを含む user.js があります。基本的に、ユーザー オブジェクトをデータベースに格納する方法に関するガイドラインを提供します。コントローラーでは、上記のコードで行っていることを実行しようとします。user = require(user.js) を実行してから、 user.find() または user.findOne() を実行して、データベースでそのことを見つけます。例えば。ユーザー名がすでにデータベースにある場合は、一意ではありません。だから彼を追加しないでください。

于 2013-04-05T06:02:37.770 に答える