0

我正在使用在前端使用 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);


    });


});
4

0 回答 0