0

私はエクスプレス + モンゴ + バックボーンの初心者です。バックボーン collection.fetch(); を介して mongodb からデータを取得しています。見返りに、データを取得していますが、以下に示すように、.length とモデル配列が 0 として表示されていますが、これは間違っています。ドリルダウンすると、すべてのドキュメント/モデルが表示されるからです。ここで何が間違っていますか?以下はクライアント側の私のコードです - バックボーン

var API = {
    getContactEntities: function () {
        var contacts = new Entities.ContactCollection();
        console.log("fetching data from database");
        contacts.fetch();
        console.log(contacts);
        if (contacts.length === 0) {
            // if we don't have any contacts yet, create some for convenience
            //return initializeContacts();
        }
        return contacts;
    }
};

以下はサーバー上の私のコードです-URL「/ contacts」でのフェッチに応答しているexpress.js

//app.get('/contacts', appointments.allContacts);
exports.allContacts = function (req, res) {
    db1.db.users.find({}, function(err, appointments) {
        if (err) { res.json(err); }
        res.json(appointments);
    });
};
-------------------------------------------------- ------------------------------------
child {長さ: 0、モデル: 配列[0]、_byId: オブジェクト、コンストラクター: 関数、url: "連絡先"…}
_byId: オブジェクト
c5:子
c6: 子
c7:子
c8:子
__proto__: オブジェクト
_events: オブジェクト
_listenerId: "l4"
長さ: 4
モデル: アレイ[4]
0: 子
_changeing: false
_events: オブジェクト
_保留中: false
_previousAttributes: オブジェクト
アトリビュート:オブジェクト
_id: "52604e58d40340638c5e4b45"
アドレス: オブジェクト
名前:「アレン」
前回のログイン: ""
姓:「ウィルキンス」
電話番号:「555-0184」
pwd: ""
ユーザーID: 「1」
ユーザー名: "chidu.murthy@gmail.com"
ユーザーステータス: 「アクティブ」
ユーザータイプ:「管理者」
__proto__: オブジェクト
変更: オブジェクト
cid: "c5"
コレクション: 子
__proto__: サロゲート
1: 子
2: 子
3: 子供
長さ: 4
__proto__: 配列[0]
__proto__: サロゲート

何が悪いのか説明してもらえますか?

MongoDB の動作を完全に除外するために、json オブジェクトを resonse として渡しただけですが、結果は同じです!!! したがって、エクスプレスまたはバックボーンを備えたものでなければなりません

res.json(
        [
            { _id: 1, firstName: 'Alice_db', lastName: 'Arten',
                phoneNumber: '555-0184' },
            { _id: 2, firstName: 'Bob_db', lastName: 'Brigham',
                phoneNumber: '555-0163' },
            { _id: 3, firstName: 'Charlie_db', lastName: 'Campbell',
                phoneNumber: '555-0129' }
        ]
    )

よろしくお願いします。

BR、チダン

4

1 に答える 1

0

あなたが投稿したほとんどのものはOKに見えます。あなたsetTimeoutがポイントを逃した:

contacts.fetch();
//fetch is asynchronous. contacts is ALWAYS still going to be empty here
console.log(contacts);
contacts.on('sync', function () {
  //look, the 'sync' event has fired meaning the data is actually here now!
  console.log(contacts); 
});
于 2013-10-24T05:53:41.037 に答える