0

我正在创建一个待办事项列表应用程序,并尝试使用“快速路由参数”包含自定义路由。到目前为止,该程序运行良好,但是一旦我尝试引入这些自定义路径并将其记录到控制台,甚至将其添加到数据库中,第一个路径就会被添加两次或记录两次。但是,稍后添加的路径不会重复。

app.get("/:customListName", function(req,res)
{
    console.log(req.params.customListName);
    /*const list = new List
    ({
        name: customListName,
        items: defaultItems
    });

    list.save();*/

});

例如,如果添加的自定义路径名为“home”,即“localhost:3000/home”,并且我试图 console.log 路径的名称,它将打印“home”两次。稍后,如果我添加“工作”、“新”等路径,它们只会添加(和打印)一次。有时也会出现此错误:

BulkWriteError: E11000 duplicate key error collection: wolDB.items index: _id_ dup key: { _id: ObjectId('5ef4ad2110f45d54f143fa19') }

我曾尝试删除数据库并重新开始,删除索引,甚至尝试使用新数据库;但似乎问题不在数据库中,因为即使没有将其推送到数据库,问题仍然存在。我尝试重新编码整个事情,但问题仍然存在。

我也尝试过猫鼬的 findOne() ,但是当我尝试打印给定路线是否存在时,对于第一个路线,它只会打印两次“存在”。

List.findOne({name: customListName}, function(err, foundList)
    {
        if(!err)
        {
            if(!foundList)
                console.log("Doesn't exist");
            else
                console.log("Exists");
        }

    });

这是 GitHub 链接: https ://github.com/sebanti10/todolist.git

4

2 回答 2

0

如果您不需要列表并想直接保存到数据库中,请尝试使用

List.create({
        name: customListName,
        items: defaultItems
    })
于 2020-06-25T15:15:59.073 回答
0

看看你的模式。你没有在任何地方使用new mongoose.Schema(). 当您使用时,mongoose.model("Item", itemsSchema)您需要传入一个实际的模式,而不仅仅是任何对象。

您需要将所谓的方案更改为以下内容:

const itemsSchema = new Schema({
    name: String
});

Schema下可用mongoose,因此您可以mongoose.Schema直接使用或抓取它const Schema = mongoose.Schema;const { Schema } = mongoose;

于 2020-08-05T04:09:33.483 回答