Использование клавиши @ при вставке в MongoDB с помощью мангуста

Схема Mongoose не позволяет мне использовать ключ @ sign in при вставке в MongoDB с использованием Node.js. Например:

var blogSchema = new Schema({
@context : Object //error illegal token
@id : String // illegal token


}, {strict: false});

Я попробовал ключ с такими символами Юникода:

"\u0040context" = Object // ignored unicode, inserted as context
 "\x40context" = Object // ignored unicode, inserted as context
 \x40context = Object // illegal token

Также пробовал обычным способом, используя эту ссылку (первый способ), все еще не удается определить ключ с помощью @: http://blog.modulus.io/mongodb-tutorial

Моя цель - создать документ с использованием формата JSON-LD, который требует использования символа @ в ключе. Как этого добиться? Вот похожие ссылки, которые я искал для решения:
переменная с точечной нотацией mongodb
Синтаксическая ошибка Неожиданный токен ILLEGAL Mongo Console
Как использовать схему модели мангуста с динамическими ключами?
Как выполнить запрос с помощью точки (.) через Mongoose в Node.js и как добавить пустой массив
Создать объект схемы в Mongoose / Handlebars с настраиваемыми ключами / значениями
http://mongoosejs.com/docs/schematypes.html


person nihirus    schedule 29.10.2016    source источник


Ответы (1)


Вы можете использовать прямо @ между кавычками, например "@field":

"use strict";

var mongoose = require('./node_modules/mongoose');

var Schema = mongoose.Schema;
var db = mongoose.connection;

var itemSchema = new Schema({
    "@field": {
        type: String,
        required: true
    },
    "@field2": {
        type: String,
        required: true
    }
});
var Items = mongoose.model('Items', itemSchema);

var db = mongoose.connect('localhost', 'testDB');

Items.create({ "@field": "value", "@field2": "value" }, function(err, doc) {
    console.log("created");
    if (err)
        console.log(err);
    else {
        console.log(doc);
    }
    db.disconnect();
});
person Bertrand Martel    schedule 29.10.2016
comment
о, спасибо за ваше время и подробный ответ, отлично сработало. - person nihirus; 29.10.2016