无法分配给只读属性'_id'

Alo*_*lon 3 javascript mongodb node.js

我有一个Node.js应用程序.这是我第一次使用MongoDB.

我尝试插入文档时遇到此异常:

无法分配给{"title"的只读属性'_id':"some title","content":"some content","tags":"#some #tags"}

这是它出现的代码行:

db.collection(collectionName).insertOne(json, callback);
Run Code Online (Sandbox Code Playgroud)

我听说_id是Mongo应该自己创造的价值.我发现很多问题都有相同的例外,但要么不是_id字段,要么是_id字段,但在客户端,他们根本没有帮助我.

任何帮助将深表感谢!

整个代码:

蒙戈 - manager.js:

var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost:27017/blog';

function performOperation (func){
    MongoClient.connect(url, function(err, db) {

        func(db, function(err, result) {
            db.close();
        });
    });
}

function insertOne(db, collectionName, json, callback){
    db.collection(collectionName).insertOne(json, callback);
}

exports.addPost = function(json) {
    performOperation(func);

    function func (db, callback) {
        insertOne(db, "posts", json, callback)
    }
};
Run Code Online (Sandbox Code Playgroud)

index.js:

var express = require('express');
var router = express.Router();

router.post('/posts', function(req, res, next){
  var mongoManager = require('../dal/mongo-manager.js');
  mongoManager.addPost(JSON.stringify(req.body));
});

module.exports = router;
Run Code Online (Sandbox Code Playgroud)

Joh*_*yHK 8

省略JSON.stringify通话,然后req.body转到addPost.insertOne需要一个对象,而不是一个字符串.

至于为什么会导致该特定错误消息:insertOne将为_id作为doc参数传递的值添加唯一属性(如果它尚不存在),但字符串是只读(不可变)对象,因此无法添加_id它.