我正在使用在前端使用 Backbone 的 MongoDB 为 NodeJS 制作 REST api。这是演示模型
var MenuItem = Backbone.Model.extend({
idAttribute: "_id",
urlRoot: '/sentences'
});
这是在该模型上调用 fetch 的视图代码(请注意,我没有在此代码中显示该模型的创建)。我已经为 mongo 文档之一硬编码了 _id
itemDetails: function (event){
this.menuItemModel.set('_id', '526c0e21977a67d6966dc763');
this.menuItemModel.fetch();
为帖子生成的 url 在menuItem.fetch()
被调用时是这个
XHR finished loading: "http://localhost:8080/sentences/526c0e21977a67d6966dc763".
下面是 json 数据localhost:8080/sentences
,因此对带有 Mongo 对象 id 的 url 的 xhr 请求不返回任何内容。但是,如果我这样做localhost:8080/sentences/1
,它会从 json 数据数组中返回第一个。
[
{
"_id": "526c0e21977a67d6966dc763",
"question": "1",
"uk": "I heard a bloke on the train say that tomorrow's trains will be delayed.",
"us": "I heard a guy on the train say that tomorrow's trains will be delayed."
},
{
"_id": "526c0e21977a67d6966dc764",
"question": "2",
"uk": "Tom went outside for a fag. I think he smokes too much!",
"us": "Tom went outside for a cigarette. I think he smokes too much!"
},
{
"_id": "526c0e21977a67d6966dc765",
"question": "3",
"uk": "Do you fancy going to the cinema on Friday?",
"us": "How about going to the movies on Friday"
}
]
问题:为什么当我在模型上调用 fetch 时,Backbone 没有自动返回记录?
更新
这是 server.js 中返回句子的 node.js 方法/路由
app.get('/sentences', function (req, res){
db.collection('english', function(err, collection) {
collection.find().toArray(function(err, items) {
res.send(items);
});
});
})
更新
这是搜索单个记录的功能。它曾经搜索过question
(当时/sentences/1
返回了一条记录),但现在我已将其更改为按 _id 搜索,这个 url(带有 mongo id)仍然无法正常工作"http://localhost:8080/sentences/526c0e21977a67d6966dc763"
app.get('/sentences/:id', function(req,res){
var query = { '_id' : req.params.id };
db.collection('english').findOne(query, function(err, doc) {
if(err) throw err;
console.dir(doc);
res.send(doc);
});
});