0

以下はコードです

ユーザー.js:

/*
 * POST to adduser.
 */

router.post('/adduser', function(req, res) {
    var db = req.db;
    db.users.findOne({ inputUserEmail: inputUserEmail }, function(err, user) { if (user) { 
    console.log("user exists") } else { console.log("user doesn't exist") };
    db.collection('userlist').insert(req.body, function(err, result){
        res.send(
            (err === null) ? { msg: '' } : { msg: err }
        );
    });
}); 

以下は挿入コードです。

global.js:

// Add User
function addUser(event) {
    event.preventDefault();

    // Super basic validation - increase errorCount variable if any fields are blank
    var errorCount = 0;

    $('#addUser input').each(function(index, val) {
        if($(this).val() === '') { errorCount++; }
    });

    // Check and make sure errorCount's still at zero
    if(errorCount === 0) {
        // If it is, compile all user info into one object
        var newUser = {
            'username': $('#addUser fieldset input#inputUserName').val(),
            'email': $('#addUser fieldset input#inputUserEmail').val(),
            'fullname': $('#addUser fieldset input#inputUserFullname').val(),
            'age': $('#addUser fieldset input#inputUserAge').val(),
            'location': $('#addUser fieldset input#inputUserLocation').val(),
            'gender': $('#addUser fieldset input#inputUserGender').val()
        }

私はこのテクノロジーの初心者であり、非常に基本的な質問です。しかし、私はそれをコーディングすることができません。

私が間違っていること、user.jsまたはその方法を教えてください。

4

3 に答える 3

1

免責事項:node.jsを使用したことがないため、微調整が必​​要な場合があります

現在のソリューション:

あなたはおそらくあなたの検索で間違ったフィールドを選択しているでしょ{email: inputUserEmail}{inputUserEmail: inputUserEmail}

インデックス ソリューション

データベースに作業をさせることができます。アイデアはmail、mongodbがデータベースレベルでの重複挿入を防ぐように一意のインデックスを作成することです。node.js ドライバーのドキュメントの関連部分は、ここにあります

このことから私が得たものは、

db.collection('userlist').createIndex("mail", true, function(err, result){}));

メールを一意のインデックスにする必要があります。これは一度だけ実行する必要があります。

mailデータベースに既に存在するものを挿入しようとすると、次のようなメッセージinsertが返されます。したがって、次のように挿入できますerrduplicate index

router.post('/adduser', function(req, res) {
    var db = req.db; 
    db.collection('userlist').createIndex("mail", true, function(err, result){}));
    db.collection('userlist').insert(req.body, function(err, result){
           if (err) {console.log("user exists") }
         res.send(
            (err === null) ? { msg: '' } : { msg: err }
        );
    });
}); 

これは毎回インデックスを作成するため、インデックスが初期化で一度だけ作成される場合よりも時間がかかりますが、他のデータベース操作と比較して頻繁にユーザーを作成することはありません。おそらく、特定のエラー (「重複したインデックス」) または試行錯誤によって見つけることができる何かを探す必要があります。

構文について 100% 確実ではないため、疑似コードとして見るのが最適です

于 2014-08-26T16:04:10.280 に答える
1

ユーザーのメールをコレクションの id フィールドとして使用することもできます。

http://docs.mongodb.org/manual/tutorial/insert-documents/

var newUser = {
    '_id': $('#addUser fieldset input#inputUserEmail').val(),
    'username': $('#addUser fieldset input#inputUserName').val(),
    'email': $('#addUser fieldset input#inputUserEmail').val(),
    'fullname': $('#addUser fieldset input#inputUserFullname').val(),
    'age': $('#addUser fieldset input#inputUserAge').val(),
    'location': $('#addUser fieldset input#inputUserLocation').val(),
    'gender': $('#addUser fieldset input#inputUserGender').val()
};

db.collection("userList").insert(newUser);

上記のソリューションを使用すると、追加のインデックスを取得して維持することを心配する必要がなくなります。

于 2014-08-26T16:46:54.290 に答える