現在、mongoDBとnodeJSを使用して登録フォームを作成しようとしています - 新しいデータベースとコレクションを作成しました - username、password、emailとinsert_timeを私のデータベース。MongoDBへのデータの挿入 - エラーなし、挿入なし
username/emailに一意のインデックスを追加し、動作しているかどうかを確認しました。mongoのコンソールやrockmongo(php mongodb manager)を使用して重複したエントリを追加することはできません。
しかし、新しいアカウントを登録する予定のコードが実行されていて、既にデータベースに入っているデータを挿入すると、追加されるはずだったすべてのデータを含むオブジェクトが返されます新しい一意のIDで要点は、エントリを複製することができず、挿入が失敗したと言うエラーを返すべきです。代わりにデータを返し、新しいIDを返します。すでにデータベースに常駐しているデータはそのまま残されています - IDは同じですが、スクリプトの挿入によって返された新しいIDで書き換えられません。
質問は...私は間違っていますか?または、すべてが問題なく、データベースの挿入が失敗してもデータを返す必要がありますか?...
インデックスを実行する前にインデックスを定義しようとしました。 mongoDBのデフォルト関数とmongoJS関数を使用してデータを挿入しようとしました - どちらの場合も結果は同じです。
私は(mongoJS用)を実行しようとしているコード:両方のケースについては
var dbconn = require("mongojs").connect('127.0.0.1:27017/db', ['users']);
var register = function(everyone, params, callback)
{
// TODO: validation
dbconn.users.ensureIndex({username:1},{unique:true});
dbconn.users.ensureIndex({email:1},{unique:true});
dbconn.users.save(
{
username: params.username,
password: params.password,
email: params.email,
insert_time: Date.now()
},
function(error, saved)
{
if(error || !saved)
{
callback(false);
}
else
{
console.log(error);
console.log(saved);
callback(true);
}
});
}
- 新しいデータを挿入し、どのような方法でデータベースを変更しない重複したデータを挿入する - ERRORがnullと保存されています挿入されるはずのデータのコピーです。挿入が行われたかどうかを確認する方法はありますか?また、挿入前または挿入後に手動でデータがデータベースに存在するかどうかを確認する必要がありますか?
"セーフ:true"を "保存"機能に追加すると、私の問題が解決しました。ありがとう。 – biphobe