使用Restivus时,我有一个简单的初学者问题。
在我的app.js中,我宣布:
Players = new Mongo.Collection("players");
以及后来:
if (Meteor.isServer) {
// Global configuration
Api = new Restivus({
useDefaultAuth: true,
prettyJson: true
});
// Generates: GET/POST on /api/v1/players, and GET/PUT/DELETE on /api/v1/players/:id
// for Meteor.users collection (works on any Mongo collection)
Api.addCollection(Players);
// That's it! Many more options are available if needed...
}
然后我开始“meteor mongo”
meteor:PRIMARY> db.players.insert({username:"Kalle", location:"Home"})
WriteResult({ "nInserted" : 1 })
meteor:PRIMARY> db.players.insert({username:"Pelle", location:"Away"})
WriteResult({ "nInserted" : 1 })
meteor:PRIMARY> db.players.find({});
{ "_id" : ObjectId("56598d83846a7b53e8a1176b"), "username" : "Kalle","location" : "Home" }
{ "_id" : ObjectId("56598d8c846a7b53e8a1176c"), "username" : "Pelle", "location" : "Away" }
当我使用CURL尝试时,我得到:
curl -X GET http://localhost:3000/api/players
{
"status": "success",
"data": [
{
"_id": {
"_str": "56598d83846a7b53e8a1176b"
},
"username": "Kalle",
"location": "Home"
},
{
"_id": {
"_str": "56598d8c846a7b53e8a1176c"
},
"username": "Pelle",
"location": "Away"
}
]
但是当我试图找到一个特定的文件时:
curl -X GET http://localhost:3000/api/players/56598d83846a7b53e8a1176b
{
"status": "fail",
"message": "Item not found"
}
为什么不找到该文件并与之达成协议:
"_id": {
"_str": "56598d83846a7b53e8a1176b"
}
答案 0 :(得分:0)
由于meteor mongo
只是打开一个MongoDB shell,因此文档是使用_id
的ObjectId创建的(这是MongoDB ID的默认类型)。
Meteor默认为_id
s的随机字符串。因此,示例中的_id
不仅仅是您看到的字符串,而是包含它的整个ObjectId。
要使其工作,要么在mongo shell中显式设置_id
,要么(可能更好)使用meteor shell
直接从Meteor服务器插入文档。