2016-06-02 10 views
-1

からデータを返すのfindAll。マングースは、異なるモデル<strong>users.js</strong>で

Mongoのドキュメントは、次のようになります。ドキュメントを取得しようと、それはこのハンドラでは正常に動作し、その後

{ 
    "_id" : ObjectId("574fb94f6a1e7d1826c16058"), 
    "username" : "user1", 
    "tasks" : [ ], 
    "__v" : 0 
} 

handlerA.js

var User = require('../models/users.js'); 

module.exports.getUser = function(req, res){ 
    User.findOne({username: "user1"}, function(err, data){ 
    if(err){ 
     console.log('getUser err', err); 
     res.send('ERROR') 
    } else { 
     console.log('getUser fx success = ', err, data); 
     res.send(data) 
    } 
    }); 
}; 

console.logの結果:

のgetUser FX成功= NULL {タスク:[]、__v:0、ユーザ名: 'USER1'、_id:574fb94f6a1e7d1826c16058}


同じコードが、この他のハンドラに失敗別のファイル。

var User = require('../models/users.js'); 

module.exports.addStuff = function(req, res){ 
    User.findOne({username: "user1"}, function(err, data){ 
    if(err){ 
     console.log('addStuff err', err); 
     res.send('ERROR') 
    } else { 
     console.log('addStuff fx success =', err, data); 
     res.send(data) 
    } 
    }); 
}; 

console.logの結果:handlerB.js

addStuff FXの成功ヌルヌルしようとしました

....と失敗しました。.. ..

I Mongoose query return null

モンゴースはモデル名を複数形にしているので、 "blogposts"ではなく "blogposts"コレクションで検索しています。つまり、mongoシェルのクエリは "blogmodel"コレクションにあります。その場合:

var BlogModel = mongoose.Model("BlogModel", ..) 

又は第PARAMとしてコレクション名を渡す:

var BlogModel = mongoose.model("BlogPost", schema, "blogmodel") 

この溶液ヌル文書ならびにhandlerB.jsを返すhandlerA.jsもたらします。

お時間をいただきありがとうございます。とても有難い。


追加。 私は、ユーザモデルと仕事モデルの両方でfind({})を実行しました。handlerB.js 返されるドキュメントは、タスクモデルに基づいています。 User.find({})とTasks.find({})のconsole.logsを参照してください。 errはデータの次にヌル値です。

どのようにひどく私はものを壊しましたか? Model.findは、モデルにもないデータをどのように返すことができますか?

User.find({},funtion(err, data) ____________________ 
console.log of err then data 
null 
[ { subtasks: [], 
    team: [ [Object] ], 
    __v: 0, 
    maintask: '1', 
    _id: 574fce63d744cba421f750c1 
    }, 
    { subtasks: [], 
    team: [ [Object] ], 
    __v: 0, 
    maintask: '2', 
    _id: 574fce65d744cba421f750c2 
    } 
] 

Tasks.find({},function(err, data) ___________________ 
console.log of err then data 
null 
[ { subtasks: [], 
    team: [ [Object] ], 
    __v: 0, 
    maintask: '1', 
    _id: 574fce63d744cba421f750c1 }, 
    { subtasks: [], 
    team: [ [Object] ], 
    __v: 0, 
    maintask: '2', 
    _id: 574fce65d744cba421f750c2 
    }, 
] 

mongoose docsはそうのようなモデルを定義することをお勧め tasks.js

var mongoose = require('mongoose'); 

var subtaskSchema = new mongoose.Schema({ 
    subtask: { 
    type: String, 
    }, 
    team: { 
    type: Array, 
    'defualt': [], 
    }, 
    done: { 
    type: Boolean, 
    'defualt': false, 
    }, 
}); 

var Tasks = mongoose.model('tasks', { 
    maintask: { 
    type: String, 
    }, 
    subtasks: { 
    type: [subtaskSchema], 
    }, 
    team: { 
    type: Array, 
    'defualt': [], 
    }, 
    done: { 
    type: Boolean, 
    'defualt': false, 
    }, 
}); 

module.exports = Tasks; 
+2

どのようにaddStuffとgetUserを呼び出していますか? – timhysniu

+0

var express = require( 'express'); var app = express(); var bodyParser = require( 'body-parser'); //データベース var mongoose = require( 'mongoose'); mongoose.connect(process.env.MONGOLAB_URI || 'mongodb:// localhost/taskmaster'); –

+0

//リクエストを処理する var handleUsers = require( './ server/services/handleUsers.js') app.post( '/ addUser'、handleUsers.addUser); app.get( '/ getUser /:username'、handleUsers.getUser); app.get( '/ getAllUsers'、handleUsers.getAllUsers); –

答えて

0

これは、タスクモデルです...、あなたはこれを試してみたのですか?

var schema = new mongoose.Schema({ name: 'string', size: 'string' }); 
var Tank = mongoose.model('Tank', schema); 
+0

こんにちはRudi、Tyさんに助けてもらいました残念ながら私は問題は解決していないと思います。 handlerB.jsで.find({})=新しいmongoose.Schema({ 名 –

+0

するvar userSchema:{ タイプ:文字列、 が必要:真、 ユニーク:真、 小文字:真、 }、 }); module.exports = mongoose.model( 'User'、userSchema); –

+0

これは正しい方向の一歩かもしれません。モデル/スキーマを作成する方法を試してみてください。 'Tasks'と同じですが、スキーマの定義は' mongoose.Schema'のインスタンスにする必要があります – Rudi

関連する問題